小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
环境
- 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
1 | arduino复制代码sudo apt-get install libssl-dev |
如果你的操作系统版本比较老的话,也可以从源码开始安装 openssl
,命令如下
1 | bash复制代码git clone https://github.com/openssl/openssl.git |
然后是安装 libsrtp
,即 Secure Realtime Transport Protocol
,方法还是熟悉的老三样 configure
、make
和 make install
1 | bash复制代码git clone https://github.com/cisco/libsrtp.git |
最后来编译 ZLMediaKit
1 | bash复制代码cd ZLMediaKit |
在 cmake
的时候注意看看输出信息,确保 webrtc
功能已开启
编译成功后,生成的可执行文件在 release/linux/MediaServer
接下来,就可以启动服务了
1 | 复制代码sudo ./MediaServer -d |
然后,使用 ffmpeg
推送一个本地视频文件到服务器
1 | arduino复制代码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
的警告
设置下分辨率,点击开始,上方的播放器就开始播放推送的视频了
关联阅读
本文转载自: 掘金