forked from forks/ffprobe-wasm
Update project name to ffprobe-wasm.
This commit is contained in:
@@ -78,7 +78,7 @@ RUN cd /tmp/ffmpeg-${FFMPEG_VERSION} && \
|
||||
emmake make install
|
||||
|
||||
|
||||
COPY ./src/ffprobe-web-analyzer-wrapper.cpp /build/src/ffprobe-web-analyzer-wrapper.cpp
|
||||
COPY ./src/ffprobe-wasm-wrapper.cpp /build/src/ffprobe-wasm-wrapper.cpp
|
||||
COPY ./Makefile /build/Makefile
|
||||
|
||||
WORKDIR /build
|
||||
|
||||
6
Makefile
6
Makefile
@@ -1,4 +1,4 @@
|
||||
dist/ffprobe-web-analyzer.js:
|
||||
dist/ffprobe-wasm.js:
|
||||
mkdir -p dist && \
|
||||
emcc --bind \
|
||||
-O3 \
|
||||
@@ -8,5 +8,5 @@ dist/ffprobe-web-analyzer.js:
|
||||
-s INITIAL_MEMORY=268435456 \
|
||||
-pthread \
|
||||
-lavcodec -lavformat -lavfilter -lavdevice -lswresample -lswscale -lavutil -lm -lx264 -pthread \
|
||||
-o dist/ffprobe-web-analyzer.js \
|
||||
src/ffprobe-web-analyzer-wrapper.cpp
|
||||
-o dist/ffprobe-wasm.js \
|
||||
src/ffprobe-wasm-wrapper.cpp
|
||||
@@ -1,7 +1,7 @@
|
||||
# `FFProbe Web Analyzer`
|
||||
# `FFProbe Wasm`
|
||||
> A Web-based FFProbe. Powered by FFmpeg, Vue and Web Assembly! 🦀.
|
||||
|
||||
https://alfg.github.io/ffprobe-web-analyzer/
|
||||
https://alfg.github.io/ffprobe-wasm/
|
||||
|
||||
⚠️ A work-in-progress! Check back for updates!
|
||||
|
||||
@@ -9,7 +9,7 @@ https://alfg.github.io/ffprobe-web-analyzer/
|
||||
|
||||
|
||||
## Development
|
||||
`ffprobe-web-analyzer` uses [emscripten](https://emscripten.org/) to compile [FFmpeg](https://ffmpeg.org)'s [libav](https://ffmpeg.org/doxygen/4.1/index.html) to [Web Assembly](https://webassembly.org/) via [Docker](https://www.docker.com/).
|
||||
`ffprobe-wasm` uses [emscripten](https://emscripten.org/) to compile [FFmpeg](https://ffmpeg.org)'s [libav](https://ffmpeg.org/doxygen/4.1/index.html) to [Web Assembly](https://webassembly.org/) via [Docker](https://www.docker.com/).
|
||||
|
||||
Emscripten is also used to create and compile the Wasm bindings to be imported by the browser.
|
||||
|
||||
@@ -20,7 +20,7 @@ Emscripten is also used to create and compile the Wasm bindings to be imported b
|
||||
### Setup
|
||||
* Clone project and build the Wasm module via Docker:
|
||||
```
|
||||
docker-compose run ffprobe-web-analyzer make
|
||||
docker-compose run ffprobe-wasm make
|
||||
```
|
||||
|
||||
This will build the Wasm module and place it into the `/dist` directory.
|
||||
|
||||
8
build.sh
8
build.sh
@@ -1,5 +1,5 @@
|
||||
mkdir -p dist
|
||||
docker build -t ffprobe-web-analyzer .
|
||||
docker create -ti --name ffprobe-web-analyzer-container ffprobe-web-analyzer
|
||||
docker cp ffprobe-web-analyzer-container:/build/dist/ .
|
||||
docker rm -fv ffprobe-web-analyzer-container
|
||||
docker build -t ffprobe-wasm .
|
||||
docker create -ti --name ffprobe-wasm-container ffprobe-wasm
|
||||
docker cp ffprobe-wasm-container:/build/dist/ www
|
||||
docker rm -fv ffprobe-wasm-container
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
ffprobe-web-analyzer:
|
||||
ffprobe-wasm:
|
||||
build: .
|
||||
volumes:
|
||||
- "./:/build"
|
||||
@@ -96,6 +96,21 @@ FileInfoResponse get_file_info() {
|
||||
}
|
||||
fourcc[4] = 0x00; // NULL terminator.
|
||||
|
||||
AVCodec *pLocalCodec = avcodec_find_decoder(pLocalCodecParameters->codec_id);
|
||||
if (pLocalCodecParameters->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
if (video_stream_index == -1) {
|
||||
video_stream_index = i;
|
||||
pCodec = pLocalCodec;
|
||||
pCodecParameters = pLocalCodecParameters;
|
||||
}
|
||||
|
||||
printf("Video Codec: resolution %d x %d",
|
||||
pLocalCodecParameters->width, pLocalCodecParameters->height);
|
||||
} else if (pLocalCodecParameters->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
printf("Audio Codec: %d channels, sample rate %d",
|
||||
pLocalCodecParameters->channels, pLocalCodecParameters->sample_rate);
|
||||
}
|
||||
|
||||
Stream stream = {
|
||||
.id = (int)pFormatContext->streams[i]->id,
|
||||
.start_time = (int)pFormatContext->streams[i]->start_time,
|
||||
@@ -141,6 +156,7 @@ EMSCRIPTEN_BINDINGS(FileInfoResponse_struct) {
|
||||
.field("frame_size", &Stream::frame_size)
|
||||
;
|
||||
register_vector<Stream>("Stream");
|
||||
|
||||
emscripten::value_object<FileInfoResponse>("FileInfoResponse")
|
||||
.field("name", &FileInfoResponse::name)
|
||||
.field("duration", &FileInfoResponse::duration)
|
||||
2
www/package-lock.json
generated
2
www/package-lock.json
generated
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "ffprobe-web-analyzer",
|
||||
"name": "ffprobe-wasm",
|
||||
"version": "0.0.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "ffprobe-web-analyzer",
|
||||
"name": "ffprobe-wasm",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<script src="ffprobe-web-analyzer.js"></script>
|
||||
<script src="ffprobe-wasm.js"></script>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="container">
|
||||
<b-navbar-nav>
|
||||
<b-nav-item href="#">
|
||||
FFProbe Web Analyzer
|
||||
FFProbe
|
||||
</b-nav-item>
|
||||
</b-navbar-nav>
|
||||
</div>
|
||||
@@ -13,7 +13,7 @@
|
||||
<GitHubCorner />
|
||||
|
||||
<div id="app" class="container">
|
||||
<h3>FFProbe Web Analyzer</h3>
|
||||
<h3>FFProbe</h3>
|
||||
|
||||
<b-alert variant="warning" show>
|
||||
⚠️Compatible with Chrome and Edge only due to limited support for <a href="https://caniuse.com/sharedarraybuffer">SharedArrayBuffer</a> and the <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer">required CORS headers</a> for Firefox on Github Pages.
|
||||
@@ -28,8 +28,8 @@
|
||||
<div class="text-muted">
|
||||
<ul>
|
||||
<li>{{ name }}-{{ version }}</li>
|
||||
<li><a href="https://github.com/alfg/ffprobe-web-analyzer">Source</a></li>
|
||||
<li><a href="https://github.com/alfg/ffprobe-web-analyzer/issues">Report Bugs</a></li>
|
||||
<li><a href="https://github.com/alfg/ffprobe-wasm">Source</a></li>
|
||||
<li><a href="https://github.com/alfg/ffprobe-wasm/issues">Report Bugs</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<b-form-group label="Select a file:" label-for="file">
|
||||
<b-form-file
|
||||
id="file"
|
||||
accept="video/mp4"
|
||||
accept="video/*"
|
||||
v-model="file"
|
||||
:state="Boolean(file)"
|
||||
placeholder="Choose a file or drop it here..."
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<!-- http://tholman.com/github-corners/ -->
|
||||
<a
|
||||
href="https://github.com/alfg/ffprobe-web-analyzer"
|
||||
href="https://github.com/alfg/ffprobe-wasm"
|
||||
class="github-corner"
|
||||
aria-label="View source on GitHub"
|
||||
>
|
||||
|
||||
@@ -2,11 +2,11 @@ module.exports = {
|
||||
pages: {
|
||||
index: {
|
||||
entry: 'src/main.js',
|
||||
title: 'FFProbe Web Analyzer',
|
||||
title: 'FFProbe',
|
||||
}
|
||||
},
|
||||
publicPath: process.env.NODE_ENV === 'production'
|
||||
? '/ffprobe-web-analyzer/'
|
||||
? '/ffprobe-wasm/'
|
||||
: '/',
|
||||
configureWebpack: {
|
||||
devServer: {
|
||||
|
||||
Reference in New Issue
Block a user