Skip to content

Commit a136b8b

Browse files
committed
Complete basic rewrite
1 parent 2f18a2d commit a136b8b

39 files changed

+14030
-19213
lines changed

Diff for: Dockerfile

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ RUN bash -x /src/build.sh
3737

3838
# Build ffmpeg.wasm
3939
FROM ffmpeg-builder AS ffmpeg-wasm-builder
40-
COPY src/bind /src/wasm/bind
41-
COPY src/fftools /src/wasm/fftools
40+
COPY src/bind /src/src/bind
41+
COPY src/fftools /src/src/fftools
4242
COPY build/ffmpeg-wasm.sh build.sh
43-
RUN mkdir -p /src/dist/umd && bash -x /src/build.sh -o dist/umd/ffmpeg.js
44-
RUN mkdir -p /src/dist/esm && bash -x /src/build.sh -sEXPORT_ES6 -o dist/esm/ffmpeg.js
43+
RUN mkdir -p /src/dist/umd && bash -x /src/build.sh -o dist/umd/ffmpeg-core.js
44+
RUN mkdir -p /src/dist/esm && bash -x /src/build.sh -sEXPORT_ES6 -o dist/esm/ffmpeg-core.js
4545

4646
# Export ffmpeg-core.wasm to dist/, use `docker buildx build -o . .` to get assets
4747
FROM scratch AS exportor

Diff for: Makefile

+7-4
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ PROD_CFLAGS := -O3 -msimd128
99
PROD_MT_CFLAGS := $(PROD_CFLAGS) $(MT_FLAGS)
1010

1111
clean:
12-
rm -rf ./packages/ffmpeg$(PKG_SUFFIX)/dist
13-
rm -rf ./packages/ffmpeg$(PKG_SUFFIX)/types
12+
rm -rf ./packages/core$(PKG_SUFFIX)/dist
13+
rm -rf ./packages/core$(PKG_SUFFIX)/types
1414

1515
.PHONY: build
1616
build:
1717
make clean PKG_SUFFIX="$(PKG_SUFFIX)"
18-
cp -r src/types/ffmpeg packages/ffmpeg$(PKG_SUFFIX)/types
18+
cp -r src/types/ffmpeg-core packages/core$(PKG_SUFFIX)/types
1919
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
2020
EXTRA_LDFLAGS="$(EXTRA_LDFLAGS)" \
2121
FFMPEG_ST="$(FFMPEG_ST)" \
@@ -25,7 +25,7 @@ build:
2525
--build-arg EXTRA_LDFLAGS \
2626
--build-arg FFMPEG_MT \
2727
--build-arg FFMPEG_ST \
28-
-o ./packages/ffmpeg$(PKG_SUFFIX) \
28+
-o ./packages/core$(PKG_SUFFIX) \
2929
$(EXTRA_ARGS) \
3030
.
3131

@@ -49,3 +49,6 @@ prd:
4949

5050
prd-mt:
5151
make build-mt EXTRA_CFLAGS="$(PROD_MT_CFLAGS)"
52+
53+
test:
54+
npm run test

Diff for: apps/browser/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"version": "0.0.1",
44
"description": "browser example",
55
"scripts": {
6-
"start": "npx http-server ../../"
6+
"start": "npx http-server -c-1 ../../"
77
},
88
"author": "Jerome Wu <[email protected]>",
99
"license": "MIT"

Diff for: apps/browser/transcode.html

+17-5
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,32 @@ <h3>Upload a video to transcode to mp4 (x264) and play!</h3>
1111
<p id="message"></p>
1212
<script>
1313
const { fetchFile } = FFmpegUtil;
14+
const { FFmpeg } = FFmpegWASM;
1415
let ffmpeg = null;
1516

1617
const transcode = async ({ target: { files } }) => {
1718
const message = document.getElementById('message');
1819
if (ffmpeg === null) {
19-
ffmpeg = await createFFmpeg();
20-
ffmpeg.setProgress((progress) => { console.log(progress * 100); });
20+
ffmpeg = new FFmpeg();
21+
ffmpeg.on(FFmpeg.DOWNLOAD, ({ url, total, received, done }) => {
22+
console.log(`downloading ${url}, progress: ${received / total * 100} %, done: ${done}`);
23+
});
24+
ffmpeg.on(FFmpeg.PROGRESS, (p) => {
25+
message.innerHTML = `${p * 100} %`;
26+
});
27+
ffmpeg.on(FFmpeg.LOG, ({ message }) => {
28+
console.log(message);
29+
});
30+
await ffmpeg.load({
31+
coreURL: "/packages/core/dist/umd/ffmpeg-core.js",
32+
});
2133
}
2234
const { name } = files[0];
23-
ffmpeg.FS.writeFile(name, await fetchFile(files[0]));
35+
await ffmpeg.writeFile(name, await fetchFile(files[0]));
2436
message.innerHTML = 'Start transcoding';
25-
await ffmpeg.exec('-i', name, 'output.mp4');
37+
await ffmpeg.exec(['-i', name, 'output.mp4']);
2638
message.innerHTML = 'Complete transcoding';
27-
const data = ffmpeg.FS.readFile('output.mp4');
39+
const data = await ffmpeg.readFile('output.mp4');
2840

2941
const video = document.getElementById('output-video');
3042
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));

Diff for: build/ffmpeg-wasm.sh

+12-12
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
# ex:
44
# bash ffmpeg-wasm.sh -o ffmpeg.js
55

6-
EXPORT_NAME="createFFmpeg"
6+
EXPORT_NAME="createFFmpegCore"
77

88
CONF_FLAGS=(
99
-I.
10-
-I./wasm/fftools
10+
-I./src/fftools
1111
-I$INSTALL_DIR/include
1212
-L$INSTALL_DIR/lib
1313
-Llibavcodec
@@ -35,17 +35,17 @@ CONF_FLAGS=(
3535
${FFMPEG_MT:+ -sPTHREAD_POOL_SIZE=32} # use 32 threads
3636
${FFMPEG_ST:+ -sINITIAL_MEMORY=32MB -sALLOW_MEMORY_GROWTH} # Use just enough memory as memory usage can grow
3737
-sEXPORT_NAME="$EXPORT_NAME" # required in browser env, so that user can access this module from window.createFFmpeg
38-
-sEXPORTED_FUNCTIONS=$(node wasm/bind/ffmpeg/export.js) # exported functions
39-
-sEXPORTED_RUNTIME_METHODS=$(node wasm/bind/ffmpeg/export-runtime.js) # exported built-in functions
40-
--pre-js wasm/bind/ffmpeg/bind.js # extra bindings, contains most of the ffmpeg.wasm javascript code
38+
-sEXPORTED_FUNCTIONS=$(node src/bind/ffmpeg/export.js) # exported functions
39+
-sEXPORTED_RUNTIME_METHODS=$(node src/bind/ffmpeg/export-runtime.js) # exported built-in functions
40+
--pre-js src/bind/ffmpeg/bind.js # extra bindings, contains most of the ffmpeg.wasm javascript code
4141
# ffmpeg source code
42-
wasm/fftools/cmdutils.c
43-
wasm/fftools/ffmpeg.c
44-
wasm/fftools/ffmpeg_filter.c
45-
wasm/fftools/ffmpeg_hw.c
46-
wasm/fftools/ffmpeg_mux.c
47-
wasm/fftools/ffmpeg_opt.c
48-
wasm/fftools/opt_common.c
42+
src/fftools/cmdutils.c
43+
src/fftools/ffmpeg.c
44+
src/fftools/ffmpeg_filter.c
45+
src/fftools/ffmpeg_hw.c
46+
src/fftools/ffmpeg_mux.c
47+
src/fftools/ffmpeg_opt.c
48+
src/fftools/opt_common.c
4949
)
5050

5151
emcc "${CONF_FLAGS[@]}" $@

0 commit comments

Comments
 (0)