DEV Community

Shige Fukushima
Shige Fukushima

Posted on

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

はじめに

この記事では、Wowza Streaming Engine でライブストリーミング配信を行うためのセットアップを行います。

ライブ配信は、Wowza Streaming Engine にライブソースストリームを入力し、そのライブストリームをストリーミング方式に変換して、ライブストリーミング配信を行います。

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

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

Big Buck Bunny サイト のビデオコンテンツをサンプルとして使うストリーミングコンテンツとします。

配信で利用する ビデオファイル はこちらを利用しました。

手順1: ライブソースの入力セキュリティの設定

Wowza Streaming Engine にライブソースストリームを入力する際にパスワードで認証を行うことにより、
ライブソースの入力セキュリティを確保することができます。

ライブソースの入力セキュリティを設定にするには、以下の手順で行います。

  1. Wowza Streaming Engine Manager 管理 UI にログインし、上部メニューバーの [Server] をクリックします。
  2. 左のメニューから [Source Authentication] をクリックします。
  3. [+Add Source] ボタンを押します。
  4. 以下のパラメーター情報を入力して、[+Add] ボタンをクリックします。

    パラメーター
    Source User Name ソース認証のユーザー名: 例: livestream1
    Source Password (Confirm Password) ソース認証のパスワード

    注意: ユーザー名とパスワードの値は、大文字と小文字が区別され、英数字、ピリオド (.)、アンダースコア (_)、およびハイフン (-) 文字のみを含めることができます。

  5. 上部メニューバーの [Applications] をクリックし、左のメニューから既定のライブアプリケーション (live) をクリックします。

  6. 左のメニューから [Source Security] をクリックし、ソースセキュリティの設定を確認します。

    • [RTMP Sources] が Require password authentication となっているかを確認する。
    • もし設定が異なる場合は、[Edit] ボタンをクリックし、設定変更を行う。

    WSE Live Source Security 設定

手順2: FFmpeg によるビデオファイルを使ったライブソースの入力

以下のコマンドを実行し、ビデオファイルをダウンロードします。

cd ~/
mkdir videos
cd videos
curl -O https://download.blender.org/demo/movies/BBB/bbb_sunflower_1080p_30fps_normal.mp4
Enter fullscreen mode Exit fullscreen mode

ビデオのダウンロードが完了したら、FFmpeg ツールを使ってダウンロードしたビデオファイルから、
次の FFmpeg コマンドを使って、RTMP ライブソースストリームを生成し、Wowza Streaming Engine の live アプリケーションに入力します。

ライブソースストリームの入力 URL には、手順1で設定したソース認証のユーザー名 ([username]) と
ソース認証のパスワード ([password]) を正しく指定します。

ffmpeg -threads 4 -re -stream_loop -1 \
  -i ~/videos/bbb_sunflower_1080p_30fps_normal.mp4 \
  -rtmp_live live -pix_fmt yuv420p -r 30 \
  -map 0:v:0 -c:v libx264 -preset veryfast -tune animation \
    -b:v 1500k -profile:v high -s:v 1280x720 -minrate:v 1500k -maxrate:v 1500k -bufsize:v 3000k \
    -flags:v +cgop -g 60 -x264opts keyint=60:keyint_min=60:no-scenecut \
    -sc_threshold 0 -crf 23 -vsync 1 \
    -filter:v drawtext=:text=(bitrate=1500K):fontsize=32:x=32:y=32:box=1:boxcolor=white:fontcolor=black,drawtext=:text=%{localtime}:x=32:y=64:fontsize=32:box=1:boxcolor=white:fontcolor=black,drawtext=:text=%{pts\\:hms}:x=32:y=96:fontsize=32:box=1:boxcolor=white:fontcolor=black \
  -map 0:1 -c:a aac -b:a 64k -ac 2 \
    -af:a aresample=async=1:min_hard_comp=0.100000:first_pts=0 \
  -f flv rtmp://[username]:[password]@[wowza_hostname]:1935/live/livestream1
Enter fullscreen mode Exit fullscreen mode

この FFmpeg を使ったコマンドでは、ビデオファイルを 1280x720 の解像度でエンコードしたストリームで RTMP ストリームを生成しています。
エンコード時に、ビデオフィルター機能を使って、現在の日時・時刻の情報を映像に埋め込む処理をしています。

ライブソースストリームの入力が開始したら、上部メニューバーの [Applications] をクリックし、
左のメニューから既定のライブアプリケーション (live) をクリックします。
次に、左のメニューから [Incoming Streams] をクリックすると、livestream1 という名前の
ストリームが入力されていることが確認できます。

Live Incoming Stream

手順3: ライブストリーミング再生のテスト

手順2でライブストリームの入力が完了したら、ライブストリームの配信ができる状態になります。

ライブストリームの再生 URL は以下のように構成されます。

ストリーミング形式 URL
HLS https://[WowzaStreamingEngineのドメイン名]/[アプリケーション名]/[入力ストリーム名]/playlist.m3u8
DASH https://[WowzaStreamingEngineのドメイン名]/[アプリケーション名]/[入力ストリーム名]/manifest.mpd

[アプリケーション名] は、この例では live となります。

[入力ストリーム名] は、この例では livestream1 となります。

Web プレイヤーを使って、再生のテストを行います。

ライブストリーム再生テスト

まとめ

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

Wowza Streaming Engine を利用することで、RTMP, RTSP, SRT 等のライブストリームを Apple HLS, MPEG-DASH などの
ストリーミング形式に変換することができるようになります。また、CDN と組み合わせを行うことで大規模な HTTP ベースの
アダプティブストリーミング配信を実現することも可能となります。

Top comments (0)