Emscripten 网页js调用C++ (ffmpeg)

网页js调用FFmpeg,需要先编译 FFmpeg wasm;

Emscripten是一个工具链,通过LLVM来编译生成asm.js、WebAssembly字节码,能够在网页中接近最快的速度运行C和C++,并且不需要任何插件。

Emscripten 是基于LLVM的编译器,能够将任何能够生成LLVM位码的代码编译成javascript的严格子集asm.js,主要用于将C/C++代码编译成asm.js。
 

官网:​​​​​​Download and install — Emscripten 3.1.31-git (dev) documentation

主要,在 win 系统,执行 bat 文件;

           在Linux 系统执行 sh 文件;

git clone https://github.com/emscripten-core/emsdk.git

cd emsdk

emsdk update //提示执行 git pull

emsdk install latest

emsdk activate latest

emsdk_env.bat

或者 emsdk_env.sh  // 设置 emcc 环境变量;win 上是临时变量,每次cmd需要设置;

完成后,执行 emcc -v; 

如果提示命令不识别, 到 emsdk 目录中 执行 

emsdk_env.bat

每次打开 cmd 窗口都需要执行 emsdk_evn.bat,

可以自己写一个 bat 文件 先执行 emsdk_evn.bat ,这样简单写,当然可以自己添加环境变量;

编辑变量完成后:

编写测试代码:

如 D: 判根目录:

创建 test.cpp

#include <stdio.h>

int main()

{

printf("test emcc\n");

return 0;

}

cd  /d D:

emcc test.cpp

编译C++ 文件; 

D: 目录; 生成文件路径默认在 当前 命令行 目录;

emcc test.cpp 生成 a.out.js  a.out.wasm 两个文件;

测试:

cmd 窗口,  D:

node a.out.js

显示: test emcc

或者 页面调用:

写一个index.html :

http-server运行:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script src="a.out.js"></script>
</body>
</html>

本地打开会出错;

这是官网,描述更详细,可以参考;

FAQ — Emscripten 3.1.21-git (dev) documentation

导出 c / c++ 接口:

默认 main() 函数自动启动,用 node 命令 ,或者 js 在网页中是一样的默认启动;

导出别的接口:

c/c++ 接口为 test, testt, 在web JavaScript 中,通过 _test(),调用;

 -sEXPORTED_FUNCTIONS=["_test","_testt"]

一个完整的编译命令;

emcc ./test.c -I "./" -I "../" -L "./"     -l testlib1 -l testlib2  -s TOTAL_MEMORY=655360000 -sEXPORTED_FUNCTIONS=["_test","_testt"] -s STACK_SIZE=10MB  -sASSERTIONS -o ./test.js

-I :指定 lib 目录;

-L:指定 include 目录;

-I test: 连接的lib文件;

-sASSERTIONS:更详细的调试信息; 

-s MODULARIZE=1 :这个参数不可以像上面一样直接通过导出函数在JavaScript中用,而是通过web的module方式;

s STACK_SIZE=10MB;

如果快速配置环境,可以通过官方 docker,也比较简单;

ffmpeg wasm 地址:

https://github.com/ffmpegwasm/ffmpeg.wasm-core

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chinabinlang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值