emsdk 1.39.0以上使用upstream 不再使用fastcomp,可以指定安装相应版本,我是在mac os 上编译
(1) 安装,GitHub下载EMSDK,进入目录,指定版本安装
./emsdk install 1.38.48
./emsdk install sdk-1.38.48-64bit
./emsdk install fastcomp-1.38.48
(2) 激活使用, 命令只在当前命令行有效
./emsdk activate 1.39.48
source ./emsdk_env.sh
(3) 检验安装是否成功
emcc --clear-cache
emsdk version 1.38.48
fastcomp 1.38.48
ffmepeg version 4.2.2
** 安装完EMSDK,进入下载完的FFMpeg目录。三种编译命令的尝试 **
(1)没有bin 目录生成 ,去掉stripping可以生成bin文件
CPPFLAGS="-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600" \
emconfigure ./configure --cc="emcc" --cxx="em++" --ar="emar" \
--enable-cross-compile --target-os=none --arch=x86_64 --cpu=generic \
--prefix=$(pwd)/../dist --disable-ffplay --disable-ffprobe --disable-asm --disable-doc \
--disable-devices --disable-pthreads --disable-w32threads --disable-network --disable-stripping \
--enable-gpl --enable-version3 --disable-avdevice --disable-avformat --disable-swresample --disable-postproc --disable-avfilter \
--disable-hwaccels --disable-parsers --disable-bsfs --disable-debug \
--disable-protocols --disable-indevs --disable-outdevs --enable-protocol=file \
--disable-encoders \
--disable-demuxers --enable-demuxer=aac --enable-demuxer=hevc --enable-demuxer=flv \
--disable-decoders --enable-decoder=aac --enable-decoder=hevc
(2)编译成功 生成bin目录, 生成大小5M, ***注意需要在make完后 去修改config.mak 注释 RANLIB=ranlib***
emconfigure ./configure --cc="emcc" --cxx="em++" --ar="emar" \
--enable-cross-compile --target-os=none --arch=x86_64 --cpu=generic \
--prefix=$(pwd)/../dist --disable-ffplay --disable-ffprobe --disable-asm --disable-doc \
--disable-devices --disable-pthreads --disable-w32threads --disable-network \
--disable-hwaccels --disable-parsers --disable-bsfs --disable-debug \
--disable-protocols --disable-indevs --disable-outdevs --enable-protocol=file \
--disable-encoders --disable-decoders --enable-decoder=aac --enable-decoder=hevc
(3)没有avfilter 编译通过
emconfigure ./configure --cc="emcc" --cxx="em++" --ar="emar" --ranlib=emranlib \
--enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic \
--prefix=$(pwd)/../dist --disable-ffplay --disable-ffprobe --disable-asm --disable-doc \
--disable-devices --disable-pthreads --disable-w32threads --disable-network \
--disable-hwaccels --disable-parsers --disable-bsfs --disable-debug --disable-avfilter \
--disable-protocols --disable-indevs --disable-outdevs --enable-protocol=file \
--disable-avdevice --disable-postproc --disable-avdevice --disable-swresample \
--disable-demuxers --enable-demuxer=aac --enable-demuxer=hevc --enable-demuxer=flv \
--disable-encoders --disable-decoders --enable-decoder=aac --enable-decoder=hevc
完了之后 sudo emmake make , sudo emmake make install即可
// 带上则不会生成bin 目录 --disable-avfilter \
生成makefile指令后要到ffmpeg目录下的ffbuild 打开config.mak 注释 RANLIB=ranlib , 也可以配置--ranlib=emranlib, 测试是否生成bin目录与ranlib有没有关系
…/lib/libavformat.bc …/lib/libavcodec.bc …/lib/libswscale.bc …/lib/libswresample.bc …/lib/libavutil.bc 库有依赖顺序
emcc ffmpeg.bc -Os -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' -s ALLOW_MEMORY_GROWTH=1 -o ffmpeg.js