DEV Community

Shige Fukushima
Shige Fukushima

Posted on

Wowza Streaming Engine を使ったライブストリーミング (2)

はじめに

前回の記事では FFmpeg で生成した RTMP ライブストリーム (シングルストリーム) をアップロードして、
Wowza Streaming Engine 経由でストリーミング配信を行うための設定を紹介しました。

この記事では、アダプティブストリーミングのライブストリーミング配信を行うための方法を紹介します。

作業の手順は、以下の通りです。

  1. ライブソースストリームの入力セキュリティの設定 (省略)
  2. FFmpeg によるビデオファイルを使った RTMP ライブソースの入力
  3. SMIL ファイルの作成
  4. ライブストリーミング再生のテスト

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
Enter fullscreen mode Exit fullscreen mode

以下のコマンドを実行して、ビデオのトランスコードとライブソースの入力を行います。

このスクリプトでは、ビデオファイルから複数のビットレートのライブストリームを生成し、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]**"
Enter fullscreen mode Exit fullscreen mode

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 という名前のストリームが入力されていることが確認できます。

Live Incoming Stream

手順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>
Enter fullscreen mode Exit fullscreen mode

手順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 ベースの
アダプティブストリーミング配信を実現することも可能となります。

Top comments (0)