wasm需要使用Emscripten进行编译,本次使用的系统版本为
ubuntu21.04
搭建
Emscriptien
编译环境1.安装依赖包
python3
cmake
java
# 安装python sudo apt-get install python # 安装cmake sudo apt-get install cmake #安装 java sudo apt-get install default-jre
2.获取并且安装
emsdk
, 官网地址git clone https://github.com/emscripten-core/emsdk.git # 等待安装完成后进入emsdk文件夹 cd emsdk
3.开始安装emsdk
1. 安装
执行官方给的命令进行处理,官方命令处理后是本次执行有环境变量,退出终端后会刷新,原作者给了一个加入到打开终端自动加载的方式
# 下载安装依赖工具,该步骤会自动下载最新稳定版的nodejs ./emsdk install latest # 激活sdk ./emsdk activate latest # 刷新环境变量 source ./emsdk_env.sh # 如果需要打开终端自动加载环境变量则执行此操作 vim ~/.bashrc # 在文件最后一行加上下面命令,其中 path_to_emsdk 为 emsdk 的路径 source path_to_emsdk/emsdk_env.sh
2. 测试
emsdk
环境1. 创建一个简单的
test.c
文件#include <stdio.h> int main(){ printf("hello,WOrld!\n"); return 0; }
2. 编译
test.c
文件该步骤将会生成三个文件
test.html
,test.js
,test.wasm
测试页面,调用js,二进制库emcc test.c -o test.html
3. 测试是否正常使用
有两种测试方式,都依赖于
node
环境 在安装emsdk
时已经进行安装了,直接用就行方案1
通过npm全局安装并启动一个静态服务器,然后在浏览器访问 127.0.0.1:9080
npm install -g static-server static-server
使用nodejs直接执行 test.js
文件
node ./test.js
上方安装 emsdk
参考于 https://github.darkgod.online/docs/emscripten/ffmpeg
精简编译,只保留 h264
解码器
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 \
--disable-indevs \
--disable-outdevs \
--disable-filters \
--enable-decoder=h264 \
--enable-parser=h264