LiveInstantly
  • 製品
  • 最新情報
    ブログ ニュース リリース
  • 会社概要
  • 日本語 (Japanese)
    • English
  • リソース
    • パートナー記事
      • ストリーミング業界の 2023 年のトレンド
      • ストリーミング プロトコル: 知っておくべきこと
      • WebRTC とは?
      • HLS とは?
      • CMAF とは?
      • MPEG-DASHとは?
      • IETF が低遅延 HLS を HLS 仕様に盛り込む
      • 低遅延 HLS とは?
    • ニュース
      • Wowza Streaming Engine 4.8.22 のリリース
      • MediaMelons 社とのパートナーシップについて
      • LiveInstantly のご紹介
    • ブログ
      • THEOplayer プレイヤーのデモ Web アプリ
      • Nuxt3 フレームワークの THEOplayer の実装例
      • Vue3 フレームワークの THEOplayer の実装例
      • ビデオストリーミング技術の紹介
      • Wowza Streaming Engine での HLS ストリーミング
      • Wowza Streaming Engine での MPEG-DASH ストリーミング
      • Wowza Streaming Engine を使ったライブストリーミング (3)
      • Wowza Streaming Engine を使ったライブストリーミング (2)
      • Wowza Streaming Engine を使ったライブストリーミング (1)
      • Wowza Streaming Engine を使った VOD ストリーミングのセットアップ
      • シンプルな Web プレイヤーの開発と展開
      • Wowza Streaming Engine に Let's Encrypt HTTPS 証明書をセットアップ
      • Wowza Streaming Engine のセットアップ
Tabel of Contents
  • はじめに
  • 手順1: アダプティブストリーミング用の VOD ファイルの作成
  • 手順2: SMIL ファイルの作成
  • 手順3: ビデオファイルのアップロード
  • 手順4: Wowza Streaming Engine のセットアップ
    • メディアキャッシュの有効化
    • メディアキャッシュ ソースの追加
  • VOD Edge アプリケーションの作成
  • 手順5: アダプティブストリーミング再生のテスト
  • まとめ
記事の分類
カテゴリ
  • Blog 13
  • CrossPosts 8
  • News 3
パートナー
  • irdeto 1
  • mediamelon 2
  • open-source 1
  • theo 5
  • wowza 18
タグ
  • business 1
  • certbot 1
  • company 1
  • dash.js 1
  • hls 1
  • hls.js 1
  • lets-encrypt 1
  • live 3
  • mpeg-dash 1
  • partnership 2
  • player 4
  • protocol 8
  • streaming 9
  • technical 21
  • trends 1
  • vod 1
  • wowza-streaming-engine 8
  1. ホーム
  2. リソース
  3. ブログ
  4. Wowza Streaming Engine を使った VOD ストリーミングのセットアップ

Wowza Streaming Engine を使った VOD ストリーミングのセットアップ

ブログ post
By 福島 茂之
作成: 2020年10月20日
最終更新: 2023年03月29日
カテゴリ:
  • Blog
パートナー:
  • wowza
タグ:
  • technical
  • vod
  • wowza-streaming-engine
7分で読めます(目安)

はじめに

この記事では、Wowza Streaming Engine で VOD (ビデオ・オンデマンド) でストリーミング コンテンツの配信を行うためのセットアップを行います。

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

  1. アダプティブストリーミング用の VOD ファイルの作成
  2. SMIL ファイルの作成
  3. ビデオファイルのアップロード
  4. Wowza Streaming Engine のセットアップ
  5. アダプティブストリーミング再生のテスト

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

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

手順1: アダプティブストリーミング用の VOD ファイルの作成

アダプティブストリーミング方式でのストリーミング再生では、プレイヤーのネットワーク接続の帯域幅に合わせて複数のビットレートと解像度のビデオを切り替えながら、ストリーミングビデオを再生します。まず、FFmpeg ツール を使って、オリジナルのビデオファイルから、複数のビットレートの MP4 ファイルを作成します。

Ubuntu Linux への FFmpeg のインストールは以下のコマンドを実行します。

sudo apt install ffmpeg

参考までに、利用した FFmpeg のバージョンは以下になります。

$ ffmpeg -version
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers

FFmpeg を使った複数ビットレートの MP4 のトランスコードにあたり、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/adfdcdeb8ab2a4ecb7fe2b3844ef5cac/raw/a2b0272dd06f9676a02cc6f0ff812123e0490742/ffmpeg_abr_transcode.sh
curl -O https://wowzademostorage1.blob.core.windows.net/transcoding/encode_spec_sample.txt
chmod +x ffmpeg_abr_transcode.sh
./ffmpeg_abr_transcode.sh bbb_sunflower_1080p_30fps_normal.mp4 BigBuckBunny-h264-1080p-30fps encode_spec_sample.txt
mkdir bigbuckbunny-1080p-30fps-h264
mv BigBuckBunny-h264-1080p-30fps*.mp4 bigbuckbunny-1080p-30fps-h264/

生成された MP4 ビデオファイルは以下の通りです。

BigBuckBunny-h264-1080p-30fps_0400_320x180.mp4
BigBuckBunny-h264-1080p-30fps_0650_640x360.mp4
BigBuckBunny-h264-1080p-30fps_1000_640x360.mp4
BigBuckBunny-h264-1080p-30fps_1500_960x540.mp4
BigBuckBunny-h264-1080p-30fps_2250_960x540.mp4
BigBuckBunny-h264-1080p-30fps_3400_1280x720.mp4
BigBuckBunny-h264-1080p-30fps_4700_1920x1080.mp4
BigBuckBunny-h264-1080p-30fps_6000_1920x1080.mp4

手順2: SMIL ファイルの作成

アダプティブストリーミング方式での配信用に SMIL ファイルを作成します。

下記の XML (SMIL) ファイルを ~/videos/bbb_h264_1080p_30fps.smil に保存します。

<?xml version="1.0" encoding="UTF-8"?>
<smil title="Big Buck Bunny H264 1080p 30fps Adaptive Bitrate sample content">
    <body>
        <switch>
            <!-- BigBuckBunny-h264-1080p-30fps_0400_320x180.mp4 -->
            <video width="320" height="180" src="bigbuckbunny-1080p-30fps-h264/BigBuckBunny-h264-1080p-30fps_0400_320x180.mp4" systemLanguage="eng">
                <param name="videoBitrate" value="400000" valuetype="data"></param>
                <param name="audioBitrate"  value="64000" valuetype="data"></param>
            </video>
            <!-- BigBuckBunny-h264-1080p-30fps_0650_640x360.mp4 -->
            <video width="640" height="360" src="bigbuckbunny-1080p-30fps-h264/BigBuckBunny-h264-1080p-30fps_0650_640x360.mp4" systemLanguage="eng">
                <param name="videoBitrate" value="650000" valuetype="data"></param>
                <param name="audioBitrate"  value="64000" valuetype="data"></param>
            </video>
            <!-- BigBuckBunny-h264-1080p-30fps_1000_640x360.mp4 -->
            <video width="640" height="360" src="bigbuckbunny-1080p-30fps-h264/BigBuckBunny-h264-1080p-30fps_1000_640x360.mp4" systemLanguage="eng">
                <param name="videoBitrate" value="1000000" valuetype="data"></param>
                <param name="audioBitrate"   value="64000" valuetype="data"></param>
            </video>
            <!-- BigBuckBunny-h264-1080p-30fps_1500_960x540.mp4 -->
            <video width="960" height="540" src="bigbuckbunny-1080p-30fps-h264/BigBuckBunny-h264-1080p-30fps_1500_960x540.mp4" systemLanguage="eng">
                <param name="videoBitrate" value="1500000" valuetype="data"></param>
                <param name="audioBitrate"   value="64000" valuetype="data"></param>
            </video>
            <!-- BigBuckBunny-h264-1080p-30fps_2250_960x540.mp4 -->
            <video width="960" height="540" src="bigbuckbunny-1080p-30fps-h264/BigBuckBunny-h264-1080p-30fps_2250_960x540.mp4" systemLanguage="eng">
                <param name="videoBitrate" value="2250000" valuetype="data"></param>
                <param name="audioBitrate"   value="64000" valuetype="data"></param>
            </video>
            <!-- BigBuckBunny-h264-1080p-30fps_3400_1280x720.mp4 -->
            <video width="1280" height="720" src="bigbuckbunny-1080p-30fps-h264/BigBuckBunny-h264-1080p-30fps_3400_1280x720.mp4" systemLanguage="eng">
                <param name="videoBitrate" value="3400000" valuetype="data"></param>
                <param name="audioBitrate"   value="128000" valuetype="data"></param>
            </video>
            <!-- BigBuckBunny-h264-1080p-30fps_4700_1920x1080.mp4 -->
            <video width="1920" height="1080" src="bigbuckbunny-1080p-30fps-h264/BigBuckBunny-h264-1080p-30fps_4700_1920x1080.mp4" systemLanguage="eng">
                <param name="videoBitrate" value="4700000" valuetype="data"></param>
                <param name="audioBitrate"   value="128000" valuetype="data"></param>
            </video>
            <!-- BigBuckBunny-h264-1080p-30fps_6000_1920x1080.mp4 -->
            <video width="1920" height="1080" src="bigbuckbunny-1080p-30fps-h264/BigBuckBunny-h264-1080p-30fps_6000_1920x1080.mp4" systemLanguage="eng">
                <param name="videoBitrate" value="6000000" valuetype="data"></param>
                <param name="audioBitrate"   value="128000" valuetype="data"></param>
            </video>
        </switch>
    </body>
</smil>

注意: SMIL ファイルは階層化されたディレクトリには配置できないため、ソースファイルを階層化する場合は src 属性を相対パスで記載します。

手順3: ビデオファイルのアップロード

Wowza Streaming Engine では VOD 配信用に以下の3つのアプリケーションのタイプがあります。

タイプ説明
VOD単一サーバー向けのアプリケーション (VOD ファイルを読み込み、プレーヤーにストリーミングするために使用します)
VOD Edgeメディア キャッシュ ソースから VOD ファイルを取り込み、VOD ファイルをプレーヤーにストリーミングするために使用します
VOD HTTP Originビデオ・オンデマンド ファイルのオリジンとして動作し、HTTP ストリーミング プロトコル (MPEG-DASH および Apple HLS) を使用して HTTP キャッシング インフラストラクチャに配信するために使用します

Wowza Streaming Engine のインストール後の既定のセットアップでは、"VOD" タイプのアプリケーションが自動的にセットアップされていて、既定では [インストール先のディレクトリ]\content フォルダから VOD ファイルを読み込みます。

手順1と手順2で作成したファイルを content フォルダにコピーしても構いません。

この記事では、メディアキャッシュ機能を使って外部のクラウドストレージにアップロードした VOD ファイルを配信するよう設定します。

外部のクラウドストレージとして、Azure Storage を使ってみます。Azure CLI の手順を以下に説明しますので、「Azure CLI をインストールする方法 」を参考に Azure CLI をインストールしてください。

export AZ_LOCATION=japanwest
export AZ_RESOURCE_GROUP=YourResourceGroup
export AZ_STORAGE_ACCOUNT=wowzavodstorage
az group create --resource-group ${AZ_RESOURCE_GROUP} --location ${AZ_LOCATION}
az storage account create --name ${AZ_STORAGE_ACCOUNT} --resource-group ${AZ_RESOURCE_GROUP} --location ${AZ_LOCATION} --sku Standard_LRS
AZ_STORAGE_KEY=$(az storage account keys list --account-name ${AZ_STORAGE_ACCOUNT} --resource-group ${AZ_RESOURCE_GROUP} | jq -r .[0].value)
az storage container create --name vod --account-name ${AZ_STORAGE_ACCOUNT} --account-key "${AZ_STORAGE_KEY}"
cd ~/videos/
az storage copy -s bigbuckbunny-1080p-30fps-h264 --destination-container vod --account-name ${AZ_STORAGE_ACCOUNT} --account-key ${AZ_STORAGE_KEY} --recursive

手順4: Wowza Streaming Engine のセットアップ

コンテンツのアップロードが完了したら、以下の手順で Wowza Streaming Engine のセットアップを行います。

メディアキャッシュの有効化

メディアキャッシュ機能を有効にするには、以下の手順で行います。

  1. Wowza Streaming Engine Manager 管理 UI にログインし、上部メニューバーの [Server] をクリックします。
  2. 左のメニューから [Media Cache] をクリックします。
  3. “Status: Enabled” と表示されている場合は、すでに有効になっているため、以降のステップは必要はありません。
  4. [Enable Media Cache] ボタンを押します。
  5. 画面上部に [Media Cache enabled. You must restart the server for changes to take effect.] と表示されたら、[Restart Now] ボタンをクリックします。

メディアキャッシュ ソースの追加

メディアキャッシュソースとして、Azure Blob Storage を追加するには、以下の手順で行います。

  1. Wowza Streaming Engine Manager 管理 UI にログインし、上部メニューバーの [Server] をクリックします。
  2. 左のメニューから [Media Cache] をクリックします。
  3. [Source] タブをクリックし、[+Add Media Cache Source] ボタンを押します。
  4. 以下のパラメーター情報を入力して、[+Add] ボタンをクリックします。
    パラメーター値
    Source NameAzure Blob Storage のメディアソースキャッシュの任意の名前: 例: Azure:wowzavodstorage
    DescriptionAzure Blob Storage のメディアソースキャッシュの説明 (任意)
    Source Typeメディアキャッシュソースのタイプ: Azure
    Prefixメディアキャッシュソースのプレフィックス: azblob/
    Blob Storage Account NameAzure Blob Storage アカウントの名前: wowzavodstorage
    Blob Storage Account Access KeyAzure Blob Storage アカウント鍵: ${AZ_STORAGE_KEY} の値

VOD Edge アプリケーションの作成

VOD Edge アプリケーションの作成は、以下の手順で行います。

  1. Wowza Streaming Engine Manager 管理 UI にログインし、上部メニューバーの [Applications] の ▼ をクリックし、[Add Application] をクリックします。
  2. VOD Edge のボタンをクリックし、[Enter a name for your new application] のテキストボックスに “vodedge” と入力し、[+Add] ボタンをクリックします。
  3. [Playback Types] では、配信に必要となる方式の項目をチェックします (ここではすべての項目をチェックします)。
  4. [Media Cache Source] では、[All Media Cache Sources are available] を選択します。
  5. [Closed Caption Sources] では、配信に必要となる字幕形式の項目をチェックします (ここではすべての項目をチェックします)。
  6. [Save] ボタンをクリックし、VOD Edge アプリケーション設定を保存します。

手順5: アダプティブストリーミング再生のテスト

手順3でコンテンツのアップロードと手順4が完了したら、VOD ファイルの配信ができる状態になります。

SMIL ファイルのメディアキャッシュソースの再生 URL は以下のように構成されます。

http(s)://[Wowza Streaming Engine のドメイン名]/[VOD Edgeアプリケーション名]/_definst_/smil:[Media Cache Source Prefix][Media Source の Path]/[Manifest]

[Manifest] は playlist.m3u8 または manifest.mpd

VOD コンテンツの再生 URL は、以下の通りです。

ストリーミング形式URL
HLShttps://[WowzaStreamingEngineのドメイン名]/vodedge/_definst_/smil:azblob/bbb_h264_1080p_30fps.smil/playlist.m3u8
DASHhttps://[WowzaStreamingEngineのドメイン名]/vodedge/_definst_/smil:azblob/bbb_h264_1080p_30fps.smil/manifest.mpd

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

VOD再生テスト

メディアキャッシュ ソース上の MP4 ファイルに対して、RTMP や RTSP での配信も可能です。

再生 URL の中の “smil:” の代わりに “mp4:” を使います。

まとめ

この記事では、VOD ファイルをクラウドストレージにアップロードして、Wowza Streaming Engine 経由で ストリーミング配信を行うための設定を紹介しました。

Wowza Streaming Engine を利用することで、マルチビットレートの MP4 ファイルを Apple HLS, MPEG-DASH などの ストリーミング形式に変換することができるようになります。

複数の Wowza Streaming Engine サーバーを導入することでスケーラビリティ高い配信を実現することもできます。 また、さらに CDN と組み合わせを行うことで大規模な HTTP ベースのアダプティブストリーミング配信を実現することも可能となります。

  • 新しい記事
  • 古い記事
  1. ホーム
  2. リソース
  3. ブログ
  4. Wowza Streaming Engine を使った VOD ストリーミングのセットアップ
  • LiveInstantly 合同会社
  • ライブビデオストリーミング配信ソリューションにより、お客様のビジネスのデジタルトランスフォーメーションを推進します
  • sales@liveinstantly.com
リンク
  • 製品
  • 会社概要
製品
  • Wowza
  • THEO
  • Irdeto
最新情報
  • ニュース リリース
  • ブログ
Copyright © 2020-2022 LiveInstantly, LLC. All rights reserved.
  • お問い合わせ
  • |
  • プライバシーポリシー
  • |
  • English