まとめ
この記事では、 Ubuntu 上でZLMediaKITtプロジェクトのソース コードをビルドする方法と、その WebRTC ストリーミングおよび再生機能を体験する方法について説明します。
研究室環境
操作系统版本:Ubuntu 22.04.3 LTS
gcc版本:11.4.0
g++版本:11.4.0
依存ライブラリのインストール
#让ZLMediaKit媒体服务器具备WebRTC流转发功能的必备依赖包
sudo apt install cmake pkg-config gcc g++ libssl-dev libsrtp2-dev libusrsctp-dev
#其它可选依赖包,请根据实际需要决定是否安装。
sudo apt install libsdl-dev libavcodec-dev libavutil-dev ffmpeg
#检查已安装的必备依赖库的版本
#示例版本为3.0.2
pkg-config --modversion libcrypto libssl
#示例版本为2.4.2
pkg-config --modversion libsrtp2
#示例版本为0.9.5.0
pkg-config --modversion usrsctp
ZLMediaKit ソース コードを入手する
ZLMediaKit は、git を使用して ZLMediaKit コードを複製することを公式に推奨しています。例は次のとおりです。
#国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
ZLMediaKit ビルド スクリプトを生成する
cd ZLMediaKit
mkdir -p build
cd build
#采用默认条件编译参数,生成Makefile文件
cmake -S .. -B .
上記のビルド スクリプト生成プロセス中に、cmake は一連のプロンプト メッセージを出力します。次の情報が表示されることを確認してください。
赤矢印の部分に注意してください、表示されていない場合はWebRTC機能が正常に動作していません。
ZLMediaKit をビルドする
#用cmake命令并行编译
cmake --build . -j 16
#或者用make命令并行编译
make -j16
#耐心等待编译进度走到[100%]。
MediaServer 構成を変更する
ZLMediaKit の新バージョンでは、当局は秘密鍵構成の変更を要求しています。
テキスト エディタを使用して MediaServer 構成ファイルZLMediaKit/release/linux/Debug/config.iniを開き、シークレット構成項目を検索して、デフォルト キーを変更します。
テキスト エディタでZLMediaKit/release/linux/Debug/www/webrtc/index.htmlを開き、秘密のキーワードを検索して、URL の主要なパラメータが config.ini 内のパラメータと一致していることを確認します。そうでない場合は、ライブ ストリーム リストと一致します。以降の実験では必ず発生します。空の問題。
実行中のメディアサーバー
#cd到ZLMediaKit的构建输出目录
cd release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#在调试时,不带参数启动,方便观察控制台输出,退出请按Ctrl+C。
./MediaServer
#正式部署时,官方建议以守护进程模式启动
./MediaServer -d &
#杀死MediaServer守护进程的方法
killall -2 MediaServer
WebRTC プッシュ実験
MediaServer が実行されているホストで、ブラウザ インスタンス (またはタブ) を開き、アドレス バーに次のように入力します。
#示例为了避免端口冲突,将config.ini中的[http]节区的port修改为8080
http://localhost:8080/webrtc/
#如果未修改过默认的http服务端口,则应输入如下地址:
http://localhost/webrtc/
ブラウザの WebRTC テスト Web ページでは、カメラの解像度を設定できます。
WebRTC プッシュエンドとして、メソッドオプションとしてプッシュを選択し、データチャネルにチェックを入れて、開始ボタンをクリックします。
当然のことながら、次の画面が表示されます。
上の画像が表示されたら、ストリーミングが開始され、WebRTC 再生実験を開始できることを意味します。
WebRTC再生実験
別のブラウザ インスタンス (またはタブ) を開き、WebRTC ストリーミング実験と同じアドレスをアドレス バーに入力します。
WebRTC プレーヤーとして、メソッド オプションで [再生] を選択し、データチャネルにチェックを入れて、[開始] ボタンをクリックします。
当然のことながら、次の画面が表示されます。
上の図を見ると、ZLMediaKit メディア サーバーに基づく WebRTC ストリーミングと再生の実験が成功したことがわかります。おめでとうございます。WebRTC アプリケーション開発の閾値に入ったことになります。
RSTP ストリーミングと再生の実験
このセクションでは、RTSP プロトコルを通じてローカル mp4 ファイルを ZLMediaKit メディア サーバーにプッシュし、ユーザーがブラウザの WebRTC プレーヤーを通じてそれを視聴できるようにする方法について説明します。
サーバー構成を変更します。
メディア サーバー構成ファイル config.ini を開き、次のように directProxy 構成項目の値を 0 に変更します。
[rtsp]
#此配置项必须设置为0,否则WebRTC播放会失败。
directProxy=0
ffmpeg を使用してストリーミングをプッシュします。
#参数“-re”表示模拟实际播放的速度进行推流。
#参数“-stream_loop -l”表示循环播放test.mp4。
#参数“-bf 0”表示视频编码时,BFrame数量为0,即禁止使用B帧,避免WebRTC播放时卡顿。
#参数“-b:v 1500000”表示视频编码码率为1.5Mbps,码率越高,视频画面越清晰,对网络带宽要求越高,可省略此参数,采用默认编码码率。
#参数“-b:a 96000”表示音频编码码率为96Kbps,可省略此参数,采用默认编码码率。
ffmpeg -re -stream_loop -1 -i "test.mp4" -bf 0 -vcodec h264 -acodec libopus -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
VLC でライブ ストリームを視聴します。
在MediaServer中观察流地址(比如:.../rtp/36731AF0)。
打开VLC播放器,在【媒体】菜单中选择【打开网络串流】,输入如下网络 URL:
rtsp://127.0.0.1/live/test
点击【播放】按钮。
ブラウザでライブ ストリームを視聴します。
再生方法は「WebRTC再生実験」と同じで、ブラウザに以下のURLを入力します。
http://127.0.0.1/webrtc
WebRTC プレーヤー ページの左側にあるライブ ストリーム リストをクリックして視聴を開始します。
要約する
ZLMediaKit は、完全な機能、優れたパフォーマンス、および強力なクロスプラットフォーム機能を備えています。商用レベルのストリーミング メディア アプリケーション ソリューションです。ストリーミング メディア アプリケーション開発と C++11 プログラミングを学習するための優れた例でもあります。 -深い研究と理解。