Emcsripten裁剪编译FFmpeg

开发流程
1、下载emsdk,部署Emscripten编译环境
2、使用Emcsripten裁剪编译FFmpeg
3、使用裁剪后的FFmpeg库编写WEB所需的解码接口
4、导出对于的接口,生产wasm及js文件
Emscripten是什么
Emscripten是一个工具集,包含了将C、C++编译为WebAssembly所需的完整工具(LLVM、Node.js、Python、Java等),优点是不依赖于编译环境。
注:Emscripten 1.37.3才开始正式支持WebAssembly
emsdk是什么
emsdk是一组基于python2的脚本,用来下载并安装Emscripten
source ./emsdk_env.sh
Adding directories to PATH:
PATH += /project/wasm/emsdk
PATH += /project/wasm/emsdk/upstream/emscripten
PATH += /project/wasm/emsdk/node/14.15.5_64bit/bin

Setting environment variables:
PATH = /project/wasm/emsdk:/project/wasm/emsdk/upstream/emscripten:/project/wasm/emsdk/node/14.15.5_64bit/bin:/home/fj/.local/bin:/home/fj/.bin:/usr/local/lib/nodejs/node-v12.22.5-linux-x64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin##
EMSDK = /project/wasm/emsdk
EM_CONFIG = /project/wasm/emsdk/.emscripten
EMSDK_NODE = /project/wasm/emsdk/node/14.15.5_64bit/bin/node

emcc -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 2.0.34 (0d24418f0eac4828f096ee070dae8472d427edaa)
clang version 14.0.0 (https://github.com/llvm/llvm-project 3d39612b3dd3f6b67ee63da305d30606abbe7287)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /project/wasm/emsdk/upstream/bin

./emsdk list
The recommended precompiled SDK download is 2.0.34 (d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0).
Those are equivalent to installing/activating the following:
2.0.34 INSTALLED
All recent (non-legacy) installable versions are:
2.0.34 INSTALLED
The additional following precompiled SDKs are also available for download:
sdk-releases-upstream-cef8850d57278271766fb2163eebcb07354018e7-64bit
* sdk-releases-upstream-d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0-64bit
The following precompiled tool packages are available for download:
releases-upstream-cef8850d57278271766fb2163eebcb07354018e7-64bit
() releases-upstream-d8fc1b92dbc0ce8d740a7adb937c5137ba4755e0-64bit INSTALLED
releases-fastcomp-edf24e7233e0def312a08cc8dcec63a461155da1-64bit
releases-fastcomp-536568644fd67d53778f6111fdd5f64ad3f4c539-64bit
fastcomp-clang-e1.38.30-64bit
fastcomp-clang-e1.38.31-64bit
(
) node-14.15.5-64bit INSTALLED
emscripten-1.38.30
emscripten-1.38.31

make clean
emconfigure ./configure --cc=“emcc” --cxx=“em++” --ar=“emar” --ranlib=“emranlib” --prefix=$(pwd)/…/ffmpeg-wasm/ffmpeg-lite --enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic 
    --enable-gpl --enable-version3 
    --disable-swresample --disable-postproc --disable-logging --disable-everything 
    --disable-programs --disable-asm --disable-doc --disable-network --disable-debug 
    --disable-iconv --disable-sdl2 \ # 三方库
    --disable-avdevice \  # 设备
    --disable-avformat \ # 格式
    --disable-avfilter \  # 滤镜
    --disable-decoders \  # 解码器
    --disable-encoders \  # 编码器
    --disable-hwaccels \ # 硬件加速
    --disable-demuxers \ # 解封装
    --disable-muxers \  # 封装
    --disable-parsers \ # 解析器
    --disable-protocols \  # 协议
    --disable-bsfs \  # bit stream filter,码流转换
    --disable-indevs \  # 输入设备
    --disable-outdevs \ #输出设备
    --disable-filters \ # 滤镜
    --enable-decoder=hevc \ 
    --enable-parser=hevc
make
make install

echo “Beginning Build:”
rm -r dist
mkdir -p dist
cd FFmpeg
make clean

emconfigure ./configure --cc=“emcc” --cxx=“em++” --ar=“emar” --prefix=$(pwd)/…/dist --enable-cross-compile --target-os=none
–arch=x86_32 --cpu=generic --enable-gpl --enable-version3 --enable-small
–disable-runtime-cpudetect --disable-avdevice --disable-swresample --disable-postproc --disable-avfilter --disable-logging
–disable-ffplay --disable-ffprobe --disable-asm --disable-doc --disable-ffmpeg --disable-programs --disable-devices --disable-network --disable-hwaccels
–disable-parsers --disable-bsfs --disable-debug --disable-indevs --disable-outdevs
–disable-decoders --disable-encoders --disable-protocols --disable-demuxers --disable-muxers
–enable-avformat --enable-decoder=hevc --enable-decoder=h264 --enable-decoder=mjpeg --enable-decoder=aac --enable-parser=aac

make -j4
make install

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值