From af5a5aeaf74e2e4a443d25c7cc009abde2c56fc4 Mon Sep 17 00:00:00 2001 From: Alf Date: Mon, 9 Nov 2020 21:17:52 -0800 Subject: [PATCH] Update project name to ffprobe-wasm. --- Dockerfile | 2 +- Makefile | 6 +++--- README.md | 8 ++++---- build.sh | 8 ++++---- docker-compose.yml | 2 +- ...yzer-wrapper.cpp => ffprobe-wasm-wrapper.cpp} | 16 ++++++++++++++++ www/package-lock.json | 2 +- www/package.json | 2 +- www/public/index.html | 2 +- www/src/App.vue | 8 ++++---- www/src/components/File.vue | 2 +- www/src/components/GitHubCorner.vue | 2 +- www/vue.config.js | 4 ++-- 13 files changed, 40 insertions(+), 24 deletions(-) rename src/{ffprobe-web-analyzer-wrapper.cpp => ffprobe-wasm-wrapper.cpp} (87%) diff --git a/Dockerfile b/Dockerfile index 2facdba..d34d40d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/Makefile b/Makefile index c130309..5c5c9d5 100644 --- a/Makefile +++ b/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 \ No newline at end of file + -o dist/ffprobe-wasm.js \ + src/ffprobe-wasm-wrapper.cpp \ No newline at end of file diff --git a/README.md b/README.md index 6506c05..f260bb9 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/build.sh b/build.sh index 8f665bf..7ed2fa5 100644 --- a/build.sh +++ b/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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f49b47b..a5eb790 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3' services: - ffprobe-web-analyzer: + ffprobe-wasm: build: . volumes: - "./:/build" \ No newline at end of file diff --git a/src/ffprobe-web-analyzer-wrapper.cpp b/src/ffprobe-wasm-wrapper.cpp similarity index 87% rename from src/ffprobe-web-analyzer-wrapper.cpp rename to src/ffprobe-wasm-wrapper.cpp index fd29e64..78a63da 100644 --- a/src/ffprobe-web-analyzer-wrapper.cpp +++ b/src/ffprobe-wasm-wrapper.cpp @@ -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"); + emscripten::value_object("FileInfoResponse") .field("name", &FileInfoResponse::name) .field("duration", &FileInfoResponse::duration) diff --git a/www/package-lock.json b/www/package-lock.json index 47abb2a..13d3b13 100644 --- a/www/package-lock.json +++ b/www/package-lock.json @@ -1,5 +1,5 @@ { - "name": "ffprobe-web-analyzer", + "name": "ffprobe-wasm", "version": "0.0.1", "lockfileVersion": 1, "requires": true, diff --git a/www/package.json b/www/package.json index 088bf92..da15ce3 100644 --- a/www/package.json +++ b/www/package.json @@ -1,5 +1,5 @@ { - "name": "ffprobe-web-analyzer", + "name": "ffprobe-wasm", "version": "0.0.1", "scripts": { "serve": "vue-cli-service serve", diff --git a/www/public/index.html b/www/public/index.html index 01efcef..06fa9ec 100644 --- a/www/public/index.html +++ b/www/public/index.html @@ -12,7 +12,7 @@ We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
- + diff --git a/www/src/App.vue b/www/src/App.vue index e8a8c6e..bc258b2 100644 --- a/www/src/App.vue +++ b/www/src/App.vue @@ -4,7 +4,7 @@
- FFProbe Web Analyzer + FFProbe
@@ -13,7 +13,7 @@
-

FFProbe Web Analyzer

+

FFProbe

⚠️Compatible with Chrome and Edge only due to limited support for SharedArrayBuffer and the required CORS headers for Firefox on Github Pages. @@ -28,8 +28,8 @@
diff --git a/www/src/components/File.vue b/www/src/components/File.vue index 0451060..c3d59ea 100644 --- a/www/src/components/File.vue +++ b/www/src/components/File.vue @@ -3,7 +3,7 @@ diff --git a/www/vue.config.js b/www/vue.config.js index 22d612d..a64b2f5 100644 --- a/www/vue.config.js +++ b/www/vue.config.js @@ -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: {