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

Posted chinabinlang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。
 

主要,在 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

<!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

ffmpeg wasm 地址:

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

以上是关于Emscripten 网页js调用C++ (ffmpeg)的主要内容,如果未能解决你的问题,请参考以下文章

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

2021-09-13 使用Emscripten 将c++编译为WebAssembly给JS调用

Emscripten malloc 和跨 JS 和 C++ 的免费

将 JS 数字数组传递给 emscripten C++ 而无需 reinterpret_cast

Emscripten 传递 stl c++ map 参数

使用 emscripten 将字符串从 C++ 传递给 JS