はじめに
前回の記事では 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 ベースの アダプティブストリーミング配信を実現することも可能となります。