ZLMediaKit系列文章(共六篇):
ZLMediaKit流媒體(一)編譯安裝
ZLMediaKit教程(二)主程序和配置文件解析
ZLMediaKit教程(三)URL規則
ZLMediaKit教程(四)HTTP API
本文為第5篇:ZLMediaKit教程(五)支持WebRTC
環境
- ubuntu 18.04 64bit
- ZLMediaKit 20210924
- ffmpeg 3.4.8
webrtc是什麼
WebRTC 是 Web Real Time Communication 的縮寫,也被稱為網絡實時通信,是由 Google 和其他一些大公司推動的一個開源項目,它通過 Javascript API 來實現無插件的實時通信。WebRTC 促進了瀏覽器到瀏覽器的語音呼叫、視頻聊天和文件共享應用的大力發展。目前大多數瀏覽器已經支持了 webRTC 。
C++音視頻開發ZLMediaKit+WebRTC學習資料:點擊莬費領取→音視頻開發(資料文檔+視頻教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
下圖是 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 伺服器的地址
C++音視頻開發ZLMediaKit+WebRTC學習資料:點擊莬費領取→音視頻開發(資料文檔+視頻教程+面試題)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)
選擇 6 webrtc,這裡我們沒有證書,所以忽略掉 https 的警告
設置下解析度,點擊開始,上方的播放器就開始播放推送的視頻了
如果你對音視頻開發感興趣,或者對本文的一些闡述有自己的看法,可以在下方的留言框,一起探討。