使用Emscripten编译ffmpeg库

2 篇文章 0 订阅
2 篇文章 0 订阅

上篇博客中已经完成了把C/C++编译为js工具Emscripten的安装。但是在真正的项目开发中用到众多第三方库,在单纯的使用C/C++时,我们只需添加动态链接-L、-I便可正常编译使用,而我们在编译调用了第三方库的C文件时,该如何使用emscripten工具呢?

对于此问题官方文档上只是一带而过(https://emscripten.org/docs/compiling/Building-Projects.html#using-libraries),并没有给出如何将第三方库编译为.bc文件。本文便以ffmpeg为例,详细说明如何将第三库编译为.bc文件。

emcc version:1.38.21

ffmpeg version:3.3.2

一、准备ffmpeg

1、新建em_ffmpeg目录 $ mkdir em_ffmpeg

2、将ffmpeg3.3.2移入目录  $ cp ffmpeg-3.3.2.tar.gz em_ffmpeg/

3、解压 $ tar -zxvf ffmpeg-3.3.2.tar.gz

二、准备emscripten

1、配置emscripten环境变量

$ cd ~/emsdk/

$ source emsdk_env.sh

2、检验emscripen  $emcc -v  输出正常

三、编译ffmpeg

1、进入目录 $ cd em_ffmpeg

2、新建链接库输出地址 $ cd / && mkdir em_ffmpeg

3、进入目录 $ cd ffmpeg-3.3.2/

4、配置编译文件 $ emconfigure ./configure --cc="emcc" --prefix=/em_ffmpeg --enable-cross-compile --target-os=none --arch=x86_32 --cpu=generic --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

5、 $ make

6、$ sudo make install

7、此时已成功编译emscripten版本的ffmpeg,进行查看 $cd /em_ffmpeg && ls  可以看到bin、include、lib、share四个文件夹。$cd bin&&file ffmpeg。可以看到此ffmpeg为LLVM bitcode文件,证明编译成功。

8、尽管已经编译完成,但是并没有找到开发文档中的.bc文件,其实.bc文件已经产生只是明明不通,只有修改即可。$ cd lib 可以看到目录中一共有7个.a文件,直接使用mv指令修改即可,例:mv libavutil.a libavutil.bc。最终结果如下

9、到此所有编译工作已经完成,后续使用emscripten将调用了ffmpeg库的C/C++文件进行编译时,只用加上上面的动态链接即可,例: $mcc simplest_ffmpeg_decoder.cpp ./lib/libavformat.bc ./lib/libavcodec.bc ./lib/libswscale.bc ./lib/libswresample.bc ./lib/libavutil.bc  -I./include    -Os -s WASM=1 -o player.html

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值