环境
- ubuntu 18.04 64bit
- ZLMediaKit 20210924
- ffmpeg 3.4.8
webrtc是什么
WebRTC
是 Web Real Time Communication
的缩写,也被称为网络实时通信,是由 Google
和其他一些大公司推动的一个开源项目,它通过 Javascript API
来实现无插件的实时通信。WebRTC
促进了浏览器到浏览器的语音呼叫、视频聊天和文件共享应用的大力发展。目前大多数浏览器已经支持了 webRTC
。
下图是 WebRTC
的架构图
- 最上层的
web app
,是Web
开发者自己开发的程序,主要利用的是javascript
的web api
web api
,WebRTC
标准的API
(javascript
版),由w3c
来维护- 媒体层,这里就笼统来讲,它是
WebRTC
的底层核心部分,包括了音频和视频数据的采集、编码、传输,除此之外,还有会话的管理、点对点的链接等,采用的C++
语言编写
实践
安装 openssl
,ubuntu 18.04
对应的 openssl
版本是 1.1.1
sudo apt-get install libssl-dev
如果你的操作系统版本比较老的话,也可以从源码开始安装 openssl
,命令如下
git clone https://github.com/openssl/openssl.git
cd openssl
./config
make
sudo make install
然后是安装 libsrtp
,即 Secure Realtime Transport Protocol
,方法还是熟悉的老三样 configure
、make
和 make install
git clone https://github.com/cisco/libsrtp.git
cd libsrtp
./configure --enable-openssl
make
sudo make install
最后来编译 ZLMediaKit
cd ZLMediaKit
mkdir build
cd build
# 加入webrtc的编译选项
cmake .. -DENABLE_WEBRTC=on
make
在 cmake
的时候注意看看输出信息,确保 webrtc
功能已开启
编译成功后,生成的可执行文件在 release/linux/MediaServer
接下来,就可以启动服务了
sudo ./MediaServer -d
然后,使用 ffmpeg
推送一个本地视频文件到服务器
ffmpeg -re -i test.mp4 -vcodec h264 -acodec aac -f flv rtmp://127.0.0.1/live/test
完成后,我们打开 chrome
浏览器,输入 http://192.168.1.140,这个 ip
地址是 MediaServer
服务器的地址
选择 6 webrtc
,这里我们没有证书,所以忽略掉 https
的警告
设置下分辨率,点击开始,上方的播放器就开始播放推送的视频了