Wowza Streaming Engine を使ったライブストリーミング (2)
Shige Fukushima
Posted on March 28, 2023
はじめに
前回の記事では FFmpeg で生成した RTMP ライブストリーム (シングルストリーム) をアップロードして、
Wowza Streaming Engine 経由でストリーミング配信を行うための設定を紹介しました。
この記事では、アダプティブストリーミングのライブストリーミング配信を行うための方法を紹介します。
作業の手順は、以下の通りです。
- ライブソースストリームの入力セキュリティの設定 (省略)
- FFmpeg によるビデオファイルを使った RTMP ライブソースの入力
- SMIL ファイルの作成
- ライブストリーミング再生のテスト
Big Buck Bunny サイト のビデオコンテンツをサンプルとして使うストリーミングコンテンツとします。
配信で利用する ビデオファイル はこちらを利用しました。
手順1: ライブソースの入力セキュリティの設定 (省略)
前回の記事で作成した設定を利用するため、ここでは省略します。
手順の詳細は、前回の記事を参照します。
手順2: FFmpeg によるビデオファイルを使ったライブソースの入力
以下のコマンドを実行し、ビデオファイルとスクリプトファイルをダウンロードします。
スクリプトファイルは Gist で公開しているシェルスクリプト を利用します。
cd ~/
mkdir videos
cd videos
curl -O https://download.blender.org/demo/movies/BBB/bbb_sunflower_1080p_30fps_normal.mp4
curl -LO https://gist.github.com/liveinstantly/7969cc44d14e96c98434cf4e8744a15f/raw/88d2a83c77e01ff32262db04f739e5755efbd6a5/ffmpeg_filelive_abr_transcode.sh
chmod +x ffmpeg_filelive_abr_transcode.sh
curl -O https://wowzademostorage1.blob.core.windows.net/transcoding/liveencode_spec_sample.txt
以下のコマンドを実行して、ビデオのトランスコードとライブソースの入力を行います。
このスクリプトでは、ビデオファイルから複数のビットレートのライブストリームを生成し、Wowza Streaming Engine に入力します。
生成する複数のライブストリームの詳細は liveencode_spec_sample.txt
ファイルで定義します。
./ffmpeg_filelive_abr_transcode.sh -f ~/videos/bbb_sunflower_1080p_30fps_normal.mp4 -s ./liveencode_spec_sample.txt -h **[WowzaStreamingEngineのドメイン名]** -a **live** -u **[username]** -p "**[password]**"
liveencode_spec_sample.txt
ファイルは、コンマ区切りのファイルになっていて、以下の情報が含まれています。
ストリーム名 | 解像度(幅) | 解像度(高さ) | ビットレート | プロファイル |
---|---|---|---|---|
livestream1 | 1280 | 720 | 1500 | high |
livestream2 | 960 | 540 | 800 | baseline |
livestream3 | 640 | 360 | 500 | baseline |
ライブソースストリームの入力が開始したら、上部メニューバーの [Applications] をクリックし、
左のメニューから既定のライブアプリケーション (live) をクリックします。
次に、左のメニューから [Incoming Streams] をクリックすると、livestream1
, livestream2
, livestream3
という名前のストリームが入力されていることが確認できます。
手順3: SMIL ファイルの作成
アダプティブストリーミング配信のために SMIL ファイルを作成します。
以下の SMIL ファイル (XML ファイル) を作成し /usr/local/WowzaStreamingEngine/content
ディレクトリに追加します。
liveencode_spec_sample.txt
ファイルの詳細情報に従って、以下のように SMIL ファイルを定義します。
<?xml version="1.0" encoding="UTF-8"?>
<smil title="Sample SMIL file for Live Adaptive Streaming">
<body>
<switch>
<video height="720" src="livestream1" systemLanguage="eng" width="1280">
<param name="videoBitrate" value="1500000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
<video height="540" src="livestream2" systemLanguage="eng" width="960">
<param name="videoBitrate" value="800000" valuetype="data"></param>
<param name="audioBitrate" value="64000" valuetype="data"></param>
</video>
<video height="360" src="livestream3" systemLanguage="eng" width="640">
<param name="videoBitrate" value="500000" valuetype="data"></param>
<param name="audioBitrate" value="64000" valuetype="data"></param>
</video>
</switch>
</body>
</smil>
手順4: ライブストリーミング再生のテスト
手順2でライブストリームの入力が完了したら、ライブストリームの配信ができる状態になります。
ライブストリームの再生 URL は以下のように構成されます。
ストリーミング形式 | URL |
---|---|
HLS | https://[WowzaStreamingEngineのドメイン名]/[アプリケーション名]/smil:[SMILファイル名]/playlist.m3u8 |
DASH | https://[WowzaStreamingEngineのドメイン名]/[アプリケーション名]/smil:[SMILファイル名]/manifest.mpd |
[アプリケーション名] は、この例では live となります。
[SMILファイル名] は、この例では adaptivelivestream となります。
Web プレイヤーを使って、再生のテストを行います。
まとめ
この記事では、FFmpeg で生成したマルチビットレートの RTMP ライブストリームをアップロードして、
Wowza Streaming Engine 経由でストリーミング配信を行うための設定を紹介しました。
Wowza Streaming Engine を利用することで、RTMP, RTSP, SRT 等のライブストリームを Apple HLS, MPEG-DASH などの
ストリーミング形式に変換することができるようになります。また、CDN と組み合わせを行うことで大規模な HTTP ベースの
アダプティブストリーミング配信を実現することも可能となります。
Posted on March 28, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.