欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

ZLMediaKit教程(五)支持webrtc

ZLMediaKit 迷途小书童 2年前 (2021-10-27) 2892次浏览 3个评论

环境

  • ubuntu 18.04 64bit
  • ZLMediaKit 20210924
  • ffmpeg 3.4.8

webrtc是什么

WebRTCWeb Real Time Communication 的缩写,也被称为网络实时通信,是由 Google 和其他一些大公司推动的一个开源项目,它通过 Javascript API 来实现无插件的实时通信。WebRTC 促进了浏览器到浏览器的语音呼叫、视频聊天和文件共享应用的大力发展。目前大多数浏览器已经支持了 webRTC

下图是 WebRTC 的架构图

zlmediakit webrtc

  • 最上层的 web app,是 Web 开发者自己开发的程序,主要利用的是 javascriptweb api
  • web apiWebRTC 标准的 API (javascript 版),由 w3c 来维护
  • 媒体层,这里就笼统来讲,它是 WebRTC 的底层核心部分,包括了音频和视频数据的采集、编码、传输,除此之外,还有会话的管理、点对点的链接等,采用的 C++ 语言编写

实践

安装 opensslubuntu 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,方法还是熟悉的老三样 configuremakemake 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 功能已开启

zlmediakit 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 服务器的地址

zlmediakit webrtc

选择 6 webrtc,这里我们没有证书,所以忽略掉 https 的警告

zlmediakit webrtc

设置下分辨率,点击开始,上方的播放器就开始播放推送的视频了

zlmediakit webrtc

zlmediakit webrtc

关联阅读

  1. ZLMediaKit教程(一)编译安装
  2. ZLMediaKit教程(二)主程序和配置文件
  3. ZLMediaKit教程(三)URL规则
  4. ZLMediaKit教程(四)HTTP API
喜欢 (0)

您必须 登录 才能发表评论!

(3)个小伙伴在吐槽
  1. 楼主推这个流的时候播放不卡吗?测试中直接用ffmpeg推流,webrtc播放时候10s才能有一帧数据,后来,看了github issue,才知道webrtc不支持B帧,所以ffmpeg要过滤B帧,命令修改如下:ffmpeg -re -i test.mp4 -vcodec h264 -bf 0 -acodec aac -f flv rtmp://127.0.0.1/live/test。参考 https://github.com/ZLMediaKit/ZLMediaKit/issues/1277
    匿名2022-02-10 08:54
  2. 楼主推这个流的时候播放不卡吗?测试中直接用ffmpeg推流,webrtc播放时候10s才能有一帧数据,后来,看了github issue,才知道webrtc不支持B帧,所以ffmpeg要过滤B帧,命令修改如下:ffmpeg -re -i test.mp4 -vcodec h264 -acodec aac -f flv rtmp://127.0.0.1/live/test
    匿名2022-02-10 08:53
Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.