WebAssembly之客户端与网页进行画面实时传输实现简易1对1视频-Web端

本文介绍了使用WebAssembly在Web前端解码H.264,并进行画面输出的实现过程。通过FFmpeg和WebAssembly技术,将C/C++编译成JS和WASM文件,实现从C调用JavaScript函数,从而实现实时视频传输的1对1视频聊天功能。
摘要由CSDN通过智能技术生成

1、引言

前两篇:

2、WebAssembly

WebAssembly(简称wasm)是一个虚拟指令集体系架构(virtual ISA),整体架构包括核心的ISA定义、二进制编码、程序语义的定义与执行,以及面向不同的嵌入环境(如Web)的应用编程接口(WebAssembly API)。其初始目标是为C/C++等语言编写的程序经过编译,在确保安全和接近原生应用的运行速度更好地在Web平台上运行。

简单的解释就是:可以通过WebAssembly建立c/c++与JavaScript的通信

3、为什么需要c/c++

因为要用FFmpeg库去解码传输过来的H.264裸流,FFmpeg基于c编写的,故需要c解码之后传输给JavaScript。

4、如何使用WebAssembly技术

4.1 FFmpeg源码下载

音视频(5)客户端与网页进行画面实时传输实现简易1对1视频-客户端开发 已经讲过了,读者可以自行跳转去看如何操作~

4.2 Emscripten编译工具下载与环境搭建

下载地址: Emscripten

按照官方文档中的步骤一步一步可以将环境搭建起来

5、编译FFmpeg为静态文件(.a)

当环境搭建完成后并且确保命令emc以及emc++是存在的 /ffmpeg/目录下创建 js_build.sh脚本文件

CPPFLAGS="-D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600" \
​
emconfigure ./configure \
     --cc="emcc" \
     --cxx="em++" \
     --ar="emar" \
     --prefix=$(pwd)/dist2 \
     --cpu=generic \
     --target-os=none \
     --ranlib=emranlib \
     --arch=x86_64 \
     --disable-doc \
     --disable-debug \
     --disable-ffmpeg \
     --disable-ffplay \
     --disable-ffprobe \
     --disable-symver \
     --disable-everythin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值