54 lines
1.7 KiB
Bash
Executable File
54 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# `-o <OUTPUT_FILE_NAME>` must be provided when using this build script.
|
|
# ex:
|
|
# bash ffmpeg-wasm.sh -o ffmpeg.js
|
|
|
|
set -euo pipefail
|
|
|
|
EXPORT_NAME="createFFmpegCore"
|
|
|
|
CONF_FLAGS=(
|
|
-I.
|
|
-I./src/fftools
|
|
-I$INSTALL_DIR/include
|
|
-L$INSTALL_DIR/lib
|
|
-Llibavcodec
|
|
-Llibavdevice
|
|
-Llibavfilter
|
|
-Llibavformat
|
|
-Llibavutil
|
|
-Llibpostproc
|
|
-Llibswresample
|
|
-Llibswscale
|
|
-lavcodec
|
|
-lavdevice
|
|
-lavfilter
|
|
-lavformat
|
|
-lavutil
|
|
-lpostproc
|
|
-lswresample
|
|
-lswscale
|
|
-Wno-deprecated-declarations
|
|
$LDFLAGS
|
|
-sWASM_BIGINT # enable big int support
|
|
-sUSE_SDL=2 # use emscripten SDL2 lib port
|
|
-sMODULARIZE # modularized to use as a library
|
|
${FFMPEG_MT:+ -sINITIAL_MEMORY=1024MB} # ALLOW_MEMORY_GROWTH is not recommended when using threads, thus we use a large initial memory
|
|
${FFMPEG_MT:+ -sPTHREAD_POOL_SIZE=32} # use 32 threads
|
|
${FFMPEG_ST:+ -sINITIAL_MEMORY=32MB -sALLOW_MEMORY_GROWTH} # Use just enough memory as memory usage can grow
|
|
-sEXPORT_NAME="$EXPORT_NAME" # required in browser env, so that user can access this module from window.createFFmpeg
|
|
-sEXPORTED_FUNCTIONS=$(node src/bind/ffmpeg/export.js) # exported functions
|
|
-sEXPORTED_RUNTIME_METHODS=$(node src/bind/ffmpeg/export-runtime.js) # exported built-in functions
|
|
--pre-js src/bind/ffmpeg/bind.js # extra bindings, contains most of the ffmpeg.wasm javascript code
|
|
# ffmpeg source code
|
|
src/fftools/cmdutils.c
|
|
src/fftools/ffmpeg.c
|
|
src/fftools/ffmpeg_filter.c
|
|
src/fftools/ffmpeg_hw.c
|
|
src/fftools/ffmpeg_mux.c
|
|
src/fftools/ffmpeg_opt.c
|
|
src/fftools/opt_common.c
|
|
)
|
|
|
|
emcc "${CONF_FLAGS[@]}" $@
|