ADOBE® MEDIA SERVER 5.0.3
デベロッパーズガイド
![]() ![]() ![]() |
翻訳:株式会社サムライズ |
---|
注意
Adobe Media Server® バージョン 5についての本ドキュメントは第三者によって翻訳されたものであり、Adobe Systems Incorporated(アドビ システムズ社)は本翻訳物の正確性や完全性を査閲していません。
HTTP Dynamic Streaming および HTTP Live Streamingの設定
HTTP DynamicStreaming および HTTP Live Streaming の概要
HTTP を介したメディアのストリーミング
HTTP経由でコンテンツを配信することを通常「プログレッシブダウンロード」といいます。コンテンツは、サーバーからクライアントに、ファイルの最初から最後まで連続して転送する必要があります。クライアントが前方の場所をシークするには、その場所およびそれより前のすべてのデータがダウンロードされている必要があります。
RTMP経由でコンテンツを配信することを「ストリーミング」といいます。クライアントはサーバー (Adobe Media Server など ) に対するソケット接続を作成し、それを通してコンテンツが連続したストリームで送信されます。クライアントは、転送が済んだデータの量に関係なく、コンテンツ内の任意の点をすぐにシークできます。
Adobe HTTP DynamicStreaming はこれらの方法を組み合わせて、Flash プラットフォームで HTTP ストリーミングを実現します。HTTP Dynamic Streamingは、Flash Player クライアントがファイル全体をダウンロードせずにすぐアクセスできるフラグメントに、メディアファイルをパッケージ化します。Adobe HTTP Dynamic Streaming に含まれる複数のコンポーネントが連携して、メディアをパッケージ化し、HTTP 経由で Flash Player および AIR にストリーミングします。 HTTP Dynamic Streamingは、マルチビットレートストリーミング、DVR、および Adobe® Flash® Access™ 保護をサポートします。
Adobe Media Server 5 では、Adobe HTTP Dynamic Streamingで Apple HTTP Live Streamingのサポートが追加されています。同じ HTTP DynamicStreaming ワークフローを使用してライブコンテンツおよびオンデマンドコンテンツをパッケージ化し、Apple HTTP Live Streamingをサポートするすべてのデバイスにストリーミングします。Apple HTTP Live Streamingには、ライブメディアおよびオンデマンドメディアが含まれます。
注意:Adobe Media Server は、HTTP Live Streaming 用の Timed Metadata の追加をサポートしていません。
HTTP Dynamic Streaming のコンポーネント
Adobe HTTP Streaming ソリューションには次のコンポーネントが含まれます。
Live PackagerLive Packagerは、rootinstall/applications/livepkgr にインストールされる Adobe Media Server アプリケーションです。サーバーが RTMP 経由でライブストリームを取り込み、Live Packagerがそれをリアルタイムで F4F ファイルと MPEG-2 TS ファイルに変換します。
F4F HTTP Module ファイルを Flash Player および AIR に配信する Apache HTTP Server モジュール。F4F Module(HTTP Origin Module とも呼ばれる)は、ライブコンテンツを配信します。また、File Packagerツールを使用してオフラインでパッケージ化されたオンデマンドのコンテンツも配信します。
F4F HTTP Module は、Flash Media Server 4 以降と共に rootinstall/Apache2.2/modules/mod_f4fhttp.so にインストールされます。このモジュールは、adobe.com からスタンドアロンの Apache モジュールとして入手することもできます。
HLS HTTP Module ファイルを iOS デバイスと Mac OS に配信する Apache HTTP Server モジュール。
HTTP HLS Module は、Adobe Media Server 5 以降と共に rootinstall/Apache2.2/modules/mod_hlshttp.so にインストールされます。これは、スタンドアロンの Apache モジュールとしては入手できません。
JIT HTTP Module オンデマンドファイルをジャストインタイムでパッケージ化し、それらを Flash Player および AIR に配信する Apache HTTP Server モジュール。「ジャストインタイム」とは、クライアントでメディアファルを要求すると、リアルタイムでメディアファイルがパッケージ化されることを意味します。
JIT HTTP Module は、Adobe Media Server 5 以降と共に rootinstall/Apache2.2/modules/mod_jithttp.so にインストールされます。これは、スタンドアロンの Apache モジュールとしては入手できません。
File Packager オンデマンドメディアを F4F フラグメントに変換するコマンドラインのオフラインツール。File Packagerは、rootinstall/tools/f4fpackager フォルダーにあり、adobe.com から入手できます。
OSMF Media Player Flash Player および AIR への HTTP Dynamic Streaming をサポートする、Open Source Media Framework(OSMF)に基づいて構築された複数の Media Player があります。「構築済みの Media Player」を参照してください。
F4F ファイル形式の仕様 F4F ファイル形式では、メディアコンテンツをセグメントとフラグメントに分割する方法が説明されています。Live Packager、File Packagerおよび JIT HTTP モジュールは、この仕様に基づいたコンテンツを出力します。各フラグメントには、キャッシュ管理と高速シークを提供する固有のブートストラップ情報があります。詳細については、「F4F ファイル形式の仕様」を参照してください。
F4M ファイル形式の仕様 Flash Media Manifest ファイル形式には、HTTP Origin Module が提供できるファイルのパッケージについての情報が含まれます。マニフェスト情報には、複数のビットレートでエンコードされたファイルのコーデック、解像度および可用性が含まれます。また、マニフェスト情報には DRM データも含まれます。Media Player は F4M ファイルを使用して、1 つのメディアを再生します。詳細については、「F4M ファイル形式の仕様」を参照してください。
Adobe Access Adobe Access は保護されたメディアを Flash Player に配信します。Adobe Access で HTTP Dynamic Streamingを使用するには、File Packager と Adobe Media Server を使用してコンテンツのパッケージ化と暗号化の両方を行います。詳細については、「Protecting content with Adobe Access」を参照してください。
Adobe Media Server 5 では、Adobe Access Server を使用せずに Adobe Access レベルを保護するサポートが追加されています。
HTTP 経由でのライブメディアのストリーミングのワークフロー
ライブ HTTPストリーミングのワークフローを体験するための最も良い方法は、チュートリアルを完了することです。「ライブメディアのストリーミング(HTTP)」を参照してください。
Adobe HTTP Dynamic Streamingおよび Apple HTTP Live Streamingのすべての使用法でのワークフローを次に示します。
1 デフォルトのライブイベントを使用するか、ライブイベントを作成します。
デフォルトのライブイベントは rootinstall/applications/livepkgr/events/_definst_/liveevent です。各ライブイベントには、1 セットのコンテンツの設定内容が含まれます。詳細については、「ライブイベントの作成および設定」を参照してください。
2 (オプション)マルチビットレートストリーミングを設定するには、Set-level F4M/M3U8File Generator ツールを使用してセットレベルマニフェストファイルを生成します。セットレベルマニフェストファイルには、各ストリームに関する情報が含まれています。「HTTP経由でのライブマルチビットレートストリームのパブリッシュおよび再生」を参照してください。
3 (オプション)Adobe HTTP Dynamic Streaming用に DVR を設定するには、セットレベルマニフェストファイルを作成します。
Apple HTTP Live Streaming用にスライディングウィンドウを設定するには、httpd.conf、Application.xml またはEvent.xml ファイルを設定します。
「DVR の設定 (HDS)」および 「スライディングウィンドウの設定(HLS)」を参照してください。
4 (オプション — Adobe HTTP Dynamic Streaming)保護された HDS のコンテンツを暗号化する方法については、「HDSのコンテンツ保護の設定」を参照してください。
Adobe Access 用にコンテンツを暗号化するには、Event.xml ファイルを編集します。「Adobe Access 保護用のコンテンツの暗号化」を参照してください。
5 (オプション — Apple HTTP Live Streaming)Apple HTTP Live Streamingのコンテンツを暗号化する方法については、「HLSのコンテンツ保護の設定」を参照してください。
6 crossdomain.xml ファイルを作成し、rootinstall\webroot フォルダーにコピーします。
crossdomain.xml ファイルを使用することで、他のドメインでホストされている Flash Player クライアントがこのドメインのデータにアクセスできます。詳細については、『ActionScript 3.0 デベロッパーズガイド』の「Webサイトのコントロール(ポリシーファイル)」を参照してください。
7 ストリームをサーバーにパブリッシュします。
8 (Adobe HTTP Dynamic Streaming)Strobe Media Playback を使用してメディアを再生します。Strobe Media Playback は、Adobe Media Server と共にインストールされます。
9 (Apple HTTP Live Streaming)コンテンツを iOS または MacOS で再生します。サポートされているデバイスについては、「Apple HTTP Live Streamingdocumentation」を参照してください。
HTTP 経由でのオンデマンドメディアのストリーミングのワークフロー
オンデマンド HTTPストリーミングのワークフローを体験するための最も良い方法は、チュートリアルを完了することです。「オンデマンドメディアのストリーミング(HTTP)」を参照してください。
Adobe HTTP DynamicStreaming および Apple HTTP Live Streamingの使用法のワークフローを次に示します。
1 メディアファイルをエンコードし、それらを Adobe Media Server 上の rootinstall/webroot/vod ディレクトリにコピーします。
この場所を設定するには、「オンデマンド HDS および HLS コンテンツの場所の設定」を参照してください。
2 (オプション)マルチビットレートストリーミングを設定するには、Set-level F4M/M3U8File Generator ツールを使用してセットレベルマニフェストファイルを生成します。「HTTP 経由でのオンデマンドマルチビットレートメディアファイルの再生」を参照してください。
3 (オプション — Adobe HTTP Dynamic Streaming)保護された HDS のコンテンツを(Adobe Access を使用せずに) 暗号化する方法については、HDSのコンテンツ保護の設定」を参照してください。
Adobe Access 用にコンテンツを暗号化するには、jit.conf ファイルを編集します。「Adobe Access保護用のコンテンツの暗号化」を参照してください。
4 (オプション — Apple HTTP Live Streaming)Apple HTTP Live Streaming のコンテンツを暗号化するには、jit.conf ファイルまたは Apache httpd.conf ファイルを設定します。「Apple HLS 用のコンテンツの保護」を参照してください。
5 crossdomain.xml ファイルを作成し、rootinstall\webroot フォルダーにコピーします。
crossdomain.xml ファイルを使用することで、他のドメインでホストされている Flash Player クライアントがこのドメインのデータにアクセスできます。詳細については、『ActionScript 3.0 デベロッパーズガイド』の「Webサイトのコン トロール(ポリシーファイル)」を参照してください。
6 (Adobe HTTP Dynamic Streaming)Strobe Media Playback を使用してメディアを再生します。Strobe Media Playback は、Adobe Media Server と共にインストールされます。
7 (Apple HTTP Live Streaming)コンテンツを iOS デバイスまたは MacOS で再生します。サポートされているデバイスについては、「Apple HTTP Live Streamingdocumentation」を参照してください。
Flash Media Server 4.0 と Flash Media Server4.5 での HTTP Dynamic Streamingの相違点
Flash Media Server 4.0 と Flash Media Server 4.5 での HTTP Dynamic Streaming(HDS)の相違点は次のとおりです。
• ライブストリーミング用の簡素化された要求 URL。
「Flash Media Server 4.0 と Flash Media Server 4.5 での HTTP ライブ URL の相違点」を参照してください。
• ジャストインタイムのオンデマンドパッケージ化のサポート。
Media Player が HDS を使用して rootinstall/webroot/vod フォルダーからオンデマンドメディアファイルを要求すると、Apache はストリームをリアルタイムにパッケージ化します。Flash Media Server 4.0 と同様に、HTTP ストリーミング用に Media File を事前にパッケージ化する必要はありません。「オンデマンドメディアのストリーミング(HTTP)」を参照してください。
• jit.conf ファイルを使用して、ストリームレベルでオンデマンドストリーミングを設定。jit.conf ファイルをメディアと同じフォルダーにコピーします。「オンデマンド HTTP ストリーミングの設定」を参照してください。
• セットレベル F4Mおよび M3U8ファイルを使用して、アダプティブビットレートストリーミング用のストリームセットを設定。
セットレベルファイルは、メディアのビットレートを記述します。ライブおよびジャストインタイム Packagerは、ストリームレベルの F4Mおよび M3U8ファイルを生成して、個々のメディアを記述します。セットレベルファイルは、どの Webサーバーにも置くことができます。「HTTP 経由でのライブマルチビットレートストリームのパブリッシュおよび再生」および 「HTTP 経由でのオンデマンドマルチビットレートメディアファイルの再生」 を参照してください。
livepkgrアプリケーションを使用すると、HTTP経由でライブストリーミングイベントの数に制限なく(ディベート、スポーツイベント、タウンホールミーティングなど)を配信できます。各ライブストリーミングイベントには、マルチビット
レートストリーミング、DVRおよびコンテンツ保護のための独自の設定が必要です。
ライブイベントは、livepkgr アプリケーション内の設定レベルです。Adobe Media Server アプリケーションと同様に、ライブイベントはサーバー上のフォルダーです。フォルダーには、Manifest.xml および Event.xml の 2 つの設定ファイルが含まれています。これらの設定ファイルを使用して一連のストリームを設定します。
また、Adobe Media Server アプリケーションと同様に、ライブイベントのフォルダー名はライブイベントの名前になります。HTTP ストリーミング用にライブコンテンツをパッケージ化する Adobe Media Server アプリケーションは、「livepkgr」と呼ばれます。livepkgr アプリケーションには、「liveevent」という名前のライブイベントが含まれます。
rootinstall/applications/livepkgr/events/_definst_/liveevent
注意:「applications」フォルダーの場所を設定できます。また、「streams」フォルダーに対する仮想ディレクトリのマッピングも設定できます。ただし、「events」フォルダーに対する仮想ディレクトリのマッピングは設定できません。
ライブイベント内のストリームは、フラグメントとしてパッケージ化されてディスクに書き込まれます。ライブイベント(ストリームのコンテンツとメタデータ)は、ユーザーが削除するまで存在しています。Media Playerは、ソースストリームがパブリッシュを停止した後でコンテンツにアクセスできます。
ライブイベントの作成
ライブストリーミングイベントごとに、ライブイベントのフォルダーを作成します。
1 livepkgr アプリケーションフォルダー内に次の「events」フォルダー構造を作成します。
rootinstall/applications/livepkgr/events/applicationinstancename/liveeventname
「liveevent2」という名前の新しいライブイベントを次に示します。
rootinstall/applications/livepkgr/events/_definst_/liveevent2
次の場所に livepkgrアプリケーションの別のインスタンスのライブイベントを作成することもできます。
rootinstall/applications/livepkgr/events/anotherappinstance/liveevent
2 Events.xml ファイルをデフォルトの liveevent フォルダーから新しいフォルダーにコピーします。
rootinstall/applications/livepkgr/events/_definst_/liveevent2/Events.xml
3 Manifest.xml ファイルをデフォルトの liveevent フォルダーから新しいフォルダーにコピーします。
rootinstall/applications/livepkgr/events/_definst_/liveevent2/Manifest.xml
4 Events.xml ファイルをテキストエディターで開き、次のようにイベント名を変更します。
<Event>
<EventID>liveevent2</EventID>
<Recording>
<FragmentDuration>4000</FragmentDuration>
<SegmentDuration>400000</SegmentDuration>
<DiskManagementDuration>3</DiskManagementDuration>
<Recording>
</Event>
ライブイベントの設定
Event.xml file で設定可能な機能の詳細については、「ライブ HTTP ストリーミングのイベントレベル(Event.xml)での設定」を参照してください。
ライブイベントにストリームを割り当てるためのサーバーサイドコードの記述
重要:HTTP Dynamic Streaming用にサーバーサイドコードを記述する必要はありません。livepkgr アプリケーションには、ライブイベントにストリームを割り当てるサーバーサイド ActionScript ファイルがあります。コードを確認するには、 rootinstall/applications/livepkgr/main.asc をテキストエディターで開いてください。このセクションを参照して、コードを理解してください。
Live Packagerプロセスでは、接頭辞が f4f: のストリームを処理します。Flash Media Live Encoder は f4f: 接頭辞をサポートしていないので、サーバーサイドスクリプトまたは Adobe Media Server Authorization プラグインでストリーム名に接頭辞を追加します。
1 つのアプリケーションに複数のライブイベントを含めることができます。そのため、アプリケーションにパブリッシュされるストリームは、デフォルトではライブイベントと関連付けられません。ライブストリームとライブイベントを関連付けるには、サーバーサイドスクリプトまたは Adobe Media Server Authorizationプラグインの(両方ではなく)どちらか一方を使用します。1 つのライブストリームは 1 つのライブイベントのみと関連付けることができます。
ストリームの関連付けはパブリッシュイベントの間に行います。ストリームがパブリッシュされて関連付けられると、サーバーはストリームのストリーム記録ファイル(.stream)を次のイベントディレクトリに作成します。
applications/appname/events/appinstancename/liveeventname/livestream.stream
ストリーム記録ファイルには、パッケージ化されたストリームファイルの場所についての情報が含まれます。HTTP Origin Module は、この情報を使用して .f4m マニフェストファイルを生成します。詳細については、「ライブHTTP Dynamic Streaming のアプリケーションフローについて」を参照してください。
サーバーサイド ActionScript の使用
このコード例を参照するには、rootinstall/applications/livepkgr/main.asc をテキストエディターで開きます。
❖ サーバーサイド ActionScript のコードでは、application.onPublish イベントを使用して次の操作を行います。
• Stream.liveEventプロパティを使用して、サーバーが記録を始める前にライブストリームとライブイベントを関連付けます。
• f4f:接頭辞をストリーム名に追加します。これにより、ストレージをパッケージ化するようサーバーに伝えます。
• Stream.record()を呼び出してストリームを記録します。
Authorization プラグインの使用
これらのタスクを Authorization プラグインで実行するには、プラグインコードを記述する必要があります。
❖ Authorization プラグインのコードでは、E_PUBLISH イベントを使用して次の操作を行います。
• F_STREAM_TYPEフィールドを "f4f"に設定します。
• F_STREAM_LIVE_EVENT フィールドを "liveeventname" に設定します。この例では "liveevent" を使用します。
• F_STREAM_PUBLISH_TYPEフィールドを、"record"を意味する 0に設定します。
E_PUBLISH イベントを処理するサンプルの C++ コードを次に示します。
case IFmsAuthEvent::E_PUBLISH:
{
// The name of the AMS app to which the live stream is published.
char* pLiveApp = "livepkgr";
// The stream type used for HTTP Dynamic Streaming.
char* pStreamType = "f4f";
// The name of the live event defined in the livepkgr app.
char* pLiveEvent = "liveevent";
// The Auth Plug-in affects all apps on the server.
// We only want to process streams published to the livehttp app.
char* pAppName = getStringField(m_pAev, IFmsAuthEvent::F_APP_NAME);
if (pAppName && !strncmp(pAppName, pLiveApp, strlen(pLiveApp)))
{
// Set the stream type.
setStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE, pStreamType);
// Set the publish type to record.
//0 record, 1 append, -1 live
setI32Field(m_pAev, IFmsAuthEvent::F_STREAM_PUBLISH_TYPE, 0);
// Associate the stream with a live event.
setStringField(m_pAev, IFmsAuthEvent::F_STREAM_LIVE_EVENT, pLiveEvent);
}
}
要求 URLの開始の設定
Media Player がサーバーからコンテンツを要求するときに、サーバーに要求 URL を渡します。サーバー名(およびオプションのポート番号)に続く要求 URL のセクションは、Apache httpd.conf ファイルの Location ディレクティブパスで定義されています。例えば、HDS オンデマンドストリーミングの Location ディレクティブは次のとおりです。
<IfModule jithttp_module>
<Location /hds-vod>
HttpStreamingJITPEnabled true
HttpStreamingContentPath "../webroot/vod"
JitFmsDirPath ".."
Options -Indexes FollowSymLinks
</Location>
</IfModule>
Apache がパス /hds-vod を持つ要求を受け取ると、jithttp_module(ジャストインタイム)を使用して要求を処理します。
jithttp_module は、Location ディレクティブ内にネストされたディレクティブの値を使用します。
複数のテナントまたは複数のアプリケーション用の HTTPストリーミングを設定するには、異なるパスを持つ Location ディレクティブを追加します。次の表は、要求 URLの構文をリストし、Locationディレクティブパスは太字で示されています。
ストリーミングの種類 |
要求 URL の構文 |
Adobe HDS ライブ |
http://<ams-dns-or-ip>/hds-live/livepkgr/<appinstname>/<eventname>/<streamname>.f4m |
Apple HLS ライブ |
http://<ams-dns-or-ip>/hls-live/livepkgr/<appinstname>/<eventname>/<streamname>.m3u8 |
ジャストインタイムで パッケージ化される Adobe HDS オンデマンド |
http://<ams-dns-or-ip>/hds-vod/<streamname>.<fileextension>.f4m |
Apple HLS オンデマンド |
http://<ams-dns-or-ip>/hls-vod/<streamname>.<fileextension>.m3u8 |
Location ディレクティブの追加
注意:このタスクでは HDSオンデマンドを使用しますが、この手順はすべての種類の HTTPストリーミングに適用されます。
1 rootinstall/Apache2.2/conf/httpd.conf をテキストエディターで開きます。
2 編集、コピーおよび貼り付けを行うストリーミングの種類の Locationディレクティブを配置します。
3 例えば、HDS オンデマンドストリーミング用の Location を作成するには、/hds-vod セクションをコピーして、それを既存のセクションの下に貼り付けます。
<IfModule jithttp_module>
<Location /hds-vod>
HttpStreamingJITPEnabled true
HttpStreamingContentPath "../webroot/vod"
JitFmsDirPath ".."
Options -Indexes FollowSymLinks
# Uncomment the following directives to enable encryption
# for this location.
# EncryptionScope server
# ProtectionScheme phds
</Location>
</IfModule>
4 コピーしたセクションで、Location パスを /flash-vod に変更します。HttpStreamingContentPath ディレクティブを編集して、ディスク上のオンデマンドメディアの場所を変更することもできます。
<IfModule jithttp_module>
<Location /flash-vod>
HttpStreamingJITPEnabled true
HttpStreamingContentPath "../webroot/vod2"
JitFmsDirPath ".."
Options -Indexes FollowSymLinks
# Uncomment the following directives to enable encryption
# for this location.
# EncryptionScope server
# ProtectionScheme phds
</Location>
</IfModule>
注意:ライブストリーミング用のコンテンツの場所を変更するには、「ライブ HDS および HLS コンテンツの場所の設定」を参照してください。
5 rootinstall/webroot/vod2 フォルダーを作成して、sample1_1500kbps.f4vファイルを /webroot/vod フォルダーからにコピーします。
6 Apache HTTP Server を再起動します。サービス名は AMSHttpd です。
7 rootinstall/samples/videoPlayer/videoplayer.html をダブルクリックして、Adobe Media Server サンプルビデオPlayer を開きます。
8 「Stream URL」テキストボックスに次のように入力します。
http://localhost/flash-vod/sample1_1500kbps.f4v.f4m
/webroot/vod2 フォルダーから任意のファイルを再生することができます。
ディスク上のオンデマンドコンテンツの場所を設定するには、Apache httpd.conf ファイルを編集します。次のディレクティブを使用します。
ディレクティブ |
説明 |
HttpStreamingContentPath |
ストリームのルートの場所。この値は、Apache ルートフォルダーへの絶対パスまたは相対パスにすることができます。 オンデマンド HDS とオンデマンド HLS のデフォルトの場所は、"../webroot/vod" です。 |
1 rootinstall/Apache2.2/conf/httpd.conf を開きます。
2 メディアがオンデマンドストリーミング用に格納されるサーバー上の場所を変更するには、HttpStreamingContentPath ディレクティブを編集します。例えば、次のように場所を c:\hds_vod_content に変更します。
<IfModule jithttp_module>
<Location /hds-vod>
HttpStreamingJITPEnabled true
# HttpStreamingContentPath "../webroot/vod"
HttpStreamingContentPath "C:\hds_vod_content"
JitFmsDirPath ".."
Options -Indexes FollowSymLinks
# Uncomment the following directives to enable encryption
# for this location.
# EncryptionScope server
# ProtectionScheme phds
</Location>
</IfModule>
<Location /hls-vod>
HLSHttpStreamingEnabled true
HLSMediaFileDuration 8000
# HttpStreamingContentPath "../webroot/vod"
HttpStreamingContentPath "C:\hds_vod_content"
HLSFmsDirPath ".."
# Uncomment the following directives to enable encryption
# for this location.
# HLSEncryptionScope server
# HLSEncryptCipherKeyFile "../phls/vodkey.bin"
# HLSEncryptKeyURI "https://<ServerName>/hls-key/vodkey.bin"
Options -Indexes FollowSymLinks</Location>
3 Apache HTTP Server を再起動します。サービス名は AMSHttpd です。
4 サンプルファイルを /webroot/vod から c:\hds_vod_content にコピーします。このタスクは、sample1_1500kbps.f4vを使用します。
5 (HDS)ブラウザーで rootinstall/samples/videoPlayer/videoplayer.html を開き、「Stream URL」テキストボックスに次のように入力します。
http://localhost/hds-vod/sample1_1500kbps.f4v.f4m
6 (HLS)iOS を実行しているデバイス上で、Safari を開いて、次のように入力します。
http://localhost/hls-vod/sample1_1500kbps.f4v.m3u8
要求 URL は Apache 設定の変更前と同じですが、コンテンツはディスク上の別の場所にあります。Apache が /hds-vod で開始する要求を受け取ると、HttpStreamingContentPath の値に基づいて、残りのパスを解決します。
Apache 設定が有効になっているか確認するには、c:\hds_vod_content フォルダーにないサンプルファイルのストリーミングを試します。例えば、http://localhost/hds-vod/sample1_1000kbps.f4v.f4m のストリーミングを試します。サンプルビデオPlayer に、「We are unable to connect to the content you’ve requested.We apologize for the inconvenience(. 要求したコンテンツに接続できません。ご不便をおかけして申し訳ありません。)」というエラーが表示されます。
ディスク上にライブ HDS および HLS コンテンツの場所を設定するには、Apache httpd.confファイルを編集します。次のディレクティブを使用します。
ディレクティブ |
説明 |
HttpStreamingContentPath |
ディスク上のストリームのルートの場所(デフォルトで、livepkgr/streams)デフォルトで、場所は "../applications" です。この場所は、livepkgr アプリケーションのサブフォルダーである必要があります。 この値は、Apache ルートフォルダーへの絶対パスまたは相対パスにすることができます。 |
HttpStreamingLiveEventPath |
ディスク上のライブイベントのルートの場所(デフォルトで、livepkgr/events)デフォルト値は "../applications" です。この場所は、livepkgr アプリケーションのサブフォルダーである必要があります。 この値は、Apache ルートフォルダーへの絶対パスまたは相対パスにすることができます。 HLS の場合、この値は HttpStreamingURLSandboxLevel ディレクティブの値に依存します。 |
HttpStreamingURLSandboxLevel |
HttpStreamingLiveEventPath が設定されるスコープを定義します。指定できる値は、"App"、"Inst" および "Server" です。デフォルト値は "Server" です。 HttpStreamingLiveEventPath が特定のアプリケーションに対して設定されている場合は、この値を "App" に設定します。この場合、クライアント要求 URL は次のようにアプリケーション名を省略できます。 HttpStreamingLiveEventPath "..application/livepkgr" HttpStreamingURLSandboxLevel "App" 要求 URL は次のとおりです。
http://<ams-dns-or-ip>/hls-live/<app-instance>/<event-name>/<stream- name>.m3u8 HttpStreamingLiveEventPath がアプリケーションインスタンスに設定されている場合は、"Inst" という値を使用します。この場合、クライアント要求 URL は、次のように、アプリケーション名とアプリケーションインスタンスを省略できます。
HttpStreamingLiveEventPath "..application/livepkgr/events/_definst_" HttpStreamingURLSandboxLevel "Inst" 要求 URL は次のとおりです。
http://<ams-dns-or-ip>/hls-live/<event-name>/<stream-name>.m3u8 |
ディスク上のライブコンテンツの場所の設定
1 rootInstall/conf/ams.ini をテキストエディターで開きます。パラメーターの VHOST.APPSDIR を設定して、次のいずれかに設定します。
• (Windows)C:/applications
• (Linux)/opt/applications
2 サーバーを再起動します。
3 ステップ 1 の場所にフォルダーを作成して、livepkgr アプリケーションをその場所にコピーします。
4 rootinstall/Apache2.2/conf/httpd.conf をテキストエディターで開きます。
5 HDSライブコンテンツの場所を変更するには、太字のディレクティブを編集します。
<Location /hds-live>
HttpStreamingEnabled true
# HttpStreamingLiveEventPath "../applications"
# HttpStreamingContentPath "../applications"
HttpStreamingLiveEventPath "C:\applications"
HttpStreamingContentPath "C:\applications"
HttpStreamingF4MMaxAge 2
HttpStreamingBootstrapMaxAge 2
HttpStreamingFragMaxAge -1
Options -Indexes FollowSymLinks
</Location>
</IfModule>
注意:Linux では、"/opt/applications" を使用します。
6 HLSライブコンテンツの場所を変更するには、太字のディレクティブを編集します。
<IfModule hlshttp_module>
<Location /hls-live>
HLSHttpStreamingEnabled true
# HttpStreamingLiveEventPath "../applications"
# HttpStreamingContentPath "../applications"
HttpStreamingLiveEventPath "C:\applications"
HttpStreamingContentPath "C:\applications"
HLSMediaFileDuration 8000
HLSSlidingWindowLength 6
HLSFmsDirPath ".."
HLSM3U8MaxAge 2
HLSTSSegmentMaxAge -1
# Uncomment the following directives to enable encryption
# for this location.
# HLSEncryptionScope server
# HLSEncryptCipherKeyFile "../phls/liveeventkey.bin"
# HLSEncryptKeyURI "https://<ServerName>/hls-key/liveeventkey.bin"
Options -Indexes FollowSymLinks
</Location>
7 Apache HTTP Server を再起動します。サービス名は AMSHttpd です。
8 Flash Media Live Encoder を開き、次の設定でストリームをパブリッシュします。
• ビデオコーデック—H.264
• オーディオコーデック—AAC
• キーフレーム頻度— 4 秒
• FMS URL — rtmp://localhost/livepkgr
• ストリーム - livestream?adbe-live-event=liveevent
9 (HDS)ブラウザーで rootinstall/samples/videoPlayer/videoplayer.html を開き、「Stream URL」テキストボックスに次のように入力します。
http://localhost/hds-live/livepkgr/_definst_/liveevent/livestream.f4m
10(HLS)iOS を実行しているデバイスで、Safari を開いて次のように入力します。
http://localhost/hls-live/livepkgr/_definst_/liveevent/livestream.m3u8
注意:Mac OS の Safari 4.0 でコンテンツを再生するには、<video> タグを使用する HTML ドキュメントを作成します。
要求 URL のスコープの設定
1 rootinstall/Apache2.2/conf/httpd.conf をテキストエディターで開きます。
2 要求 URLのスコープ (URLサンドボックスレベルとも呼ばれる)を変更するには、太字のディレクティブを次のように編集します。
<Location /hds-live>
HttpStreamingEnabled true
# HttpStreamingLiveEventPath "../applications"
# HttpStreamingContentPath "../applications"
HttpStreamingLiveEventPath "c:\applications\livepkgr"
HttpStreamingContentPath "c:\applications"
HttpStreamingURLSandboxLevel "App"
HttpStreamingF4MMaxAge 2
HttpStreamingBootstrapMaxAge 2
HttpStreamingFragMaxAge -1
Options -Indexes FollowSymLinks
</Location></IfModule>
HLS用の要求 URLのスコープを変更するには、太字のディレクティブを次のように編集します。
<IfModule hlshttp_module>
<Location /hls-live>
HLSHttpStreamingEnabled true
# HttpStreamingLiveEventPath "../applications"
# HttpStreamingContentPath "../applications"
HttpStreamingLiveEventPath "C:\applications\livepkgr"
HttpStreamingContentPath "C:\applications"
HttpStreamingURLSandboxLevel "App"
HLSMediaFileDuration 8000
HLSSlidingWindowLength 6
HLSFmsDirPath ".."
HLSM3U8MaxAge 2
HLSTSSegmentMaxAge -1
# Uncomment the following directives to enable encryption
# for this location.
# HLSEncryptionScope server
# HLSEncryptCipherKeyFile "../phls/liveeventkey.bin"
# HLSEncryptKeyURI "https://<ServerName>/hls-key/liveeventkey.bin"
Options -Indexes FollowSymLinks
</Location>
3 Apache HTTP Server を再起動します。サービス名は AMSHttpd です。
4 Flash Media Live Encoder を開き、次の設定でストリームをパブリッシュします。
• ビデオコーデック —H.264
• オーディオコーデック —AAC
• キーフレーム頻度 — 4 秒
• FMS URL — rtmp://localhost/livepkgr
• ストリーム - livestream?adbe-live-event=liveevent
5 (HDS)rootinstall/samples/videoPlayer/videoplayer.html をダブルクリックして、Adobe Media Server サンプルビデオ Player を開きます。Stream URL に次のように入力して、「play」をクリックします。
http://<host>/hds-live/_definst_/liveevent/livestream.f4m
6 iOS を実行しているデバイスで、Safariを開いて、次のように入力します。
http://<host>/hls-live/_definst_/liveevent/livestream.m3u8
URL サンドボックスレベルがデフォルトの “Server” ではなく、“App” に設定されているため、URL にはアプリケーション名(livepkgr)が含まれません。
マルチビットレートストリーミング用のセットレベル F4M/M3U8ファイルの設定
Adobe Media Server 5
マルチビットレートストリームに関する設定情報は、セットレベル F4Mと M3U8ファイル、およびストリームレベル F4Mと M3U8ファイルの複数のレベルに分けられています。HDSの場合、ファイルは F4Mマニフェストファイルです。 HLSの場合、ファイルは M3U8バリアント再生リストです(マニュアルによっては、両方を参照するため、一般的な用語「マニフェスト」を使用する場合があります )。
セットレベル F4M と M3U8 ファイル ストリームレベルのマニフェストファイルへのURL とマルチビットレートセットの各ストリームのビットレート情報が含まれます。HDS の場合、セットレベル F4M ファイルには、DVR ローリングウィンドウに関する情報も含むことができます。HLS の場合、セットレベル M3U8 ファイルには、コーデック情報も含むことができます。
Adobe Media Server 5 には、Set-level F4M/M3U8 File Generator ツールが含まれています。このツールは、 rootinstall/tools/f4mconfig/configurator/f4mconfig.htm にインストールされます。このツールを使用してセットレベルファイルを生成します。セットレベルファイルを Web サーバーにコピーします。Media Player は、マルチビットレートコンテンツの再生にセットレベルファイルを要求します。
セットレベル F4Mファイルは次のとおりです。
<manifest xmlns="http://ns.adobe.com/f4m/2.0">
<baseURL>http://localhost/hds-live/livepkgr/_definst_/liveevent/</baseURL>
<media href="livestream1.f4m" bitrate="150"/>
<media href="livestream2.f4m" bitrate="500"/>
<media href="livestream3.f4m" bitrate="700"/>
</manifest>
セットレベル M3U8ファイルは次のとおりです。
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=150000
http://10.0.1.11/hls-live/livepkgr/_definst_/liveevent/livestream1.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000
http://10.0.1.11/hls-live/livepkgr/_definst_/liveevent/livestream2.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=700000
http://10.0.1.11/hls-live/livepkgr/_definst_/liveevent/livestream3.m3u8
ストリームレベル F4M および M3U8 ファイル ブートストラップ情報と DRM メタデータが含まれます。Live Packager および HTTP モジュールは、Media Player がコンテンツを要求すると、リアルタイムにストリームレベルの F4M と M3U8 ファイルを生成します。
セットレベルファイルをサポートする Flash/AIR Media Player セットレベルの F4M ファイルを再生するには、OSMF1.6以降を使用する Media Player を使用します。rootinstall/samples/videoPlayer にインストールされる Strobe MediaPlayback は、セットレベル F4M ファイルをサポートします。
セットレベルファイルをサポートする Apple Media Player セットレベル M3U8 ファイルを再生するには、Apple HTTP Live Streaming をサポートするデバイスを使用します。「Apple HTTP Live Streamingdocumentation」を参照してください。
F4M 仕様 F4M ファイル形式の詳細については、「F4M ファイル形式の仕様」を参照してください。
M3U8 仕様 M3U8 ファイル形式の詳細については、「HTTP Live Streaming Internet-Draft」を参照してください。
セットレベルファイルを使用するチュートリアル 次のチュートリアルは、マルチビットレートストリーミング用のセットレベルファイルを使用します。
• 「HTTP経由でのライブマルチビットレートストリームのパブリッシュおよび再生」
• 「HTTP 経由でのオンデマンドマルチビットレートメディアファイルの再生」
注意:livepkgr アプリケーションはデフォルトで絶対時間を使用するように設定されています。このセクションでは、
HTTP ストリーミングについて理解し、livepkgrアプリケーションを複製します。
livepkgr取り込みアプリケーションはデフォルトで絶対時間を使用するように設定されています。設定を確認するには、
rootinstall/applications/livepkgr/Application.xml をテキストエディターで開いてください。
ライブのマルチビットレートストリームをパブリッシュするには、絶対時間を使用してストリームをパブリッシュするようにライブエンコーダーを設定します。「ライブメディアのストリーミング(HTTP)」を参照してください。
1 Application.xml ファイルをアプリケーションフォルダーにコピーします。例えば、「livepkgr2」というアプリケーションにストリームをパブリッシュする場合は、Application.xml ファイルをconf\_defaultRoot_\_defaultVHost_ フォルダーから applications/livepkgr2 フォルダーにコピーします。
2 Application.xml ファイルをテキストエディターで開きます。
3 タグ //Application/StreamManager/Live/AssumeAbsoluteTime を true に設定します。
<Application>
...
<StreamManager>
...
<Live>
...
<AssumeAbsoluteTime>true</AssumeAbsoluteTime>
4 ファイルを保存します。
5 サーバーを再起動します。「サーバーの起動と停止」を参照してください。
重要:アプリケーションにパブリッシュされるすべてのストリームが絶対時間を使用している場合にのみ、
<AssumeAbsoluteTime> を true に設定します。この値を true に設定し、アプリケーションが絶対時間を使用しないストリームを取り込んだ場合、ストリームが停止されて再パブリッシュされると、時間が前に戻ったことを示す警告がサーバーログに記録される場合があります。
サーバーは取り込んだ(ライブ)ストリームをフラグメントに記録します。クライアントでオンデマンドファイルを要求すると、それらのファイルをサーバーがフラグメントに記録します。
Adobe HDSフラグメントはF4Fファイルです。Apple HLSフラグメントは TSファイルです。フレームまたは時間に基づいて、コンテンツのフラグメントのサイズを指定します。フレームベースの設定は、時間ベースの設定よりも優先されます。
ソースメディアに一定のフレームレートでエンコードされたビデオが含まれる場合は、フレームベースの設定を使用します。ビデオのキーフレーム間隔にフラグメントのサイズを一致させる場合は、フレームベースの設定を使用します。オーディオまたはデータだけが含まれていてビデオは含まれないメディアの場合は、時間ベースの設定を使用します。サーバーのフラグメント継続時間は、エンコーダーのキーフレーム間隔の倍数である必要があります。
KeyframeIntervalsPerFragment の値は倍数を定義します。
ライブ HDS および HLSのフラグメントサイズの設定
ライブ HDS のサーバーレベルの設定
Apache httpd.conf 内の次のディレクティブを設定して、サーバー上のすべてのライブ HDS イベントのフラグメントサイズを設定します。
ディレクティブ |
説明 |
デフォルト値 |
HttpStreamingFragmentDuration |
デフォルトのフラグメント継続時間(ミリ秒単位)。これは時間ベースの設定です。フレームベースの値を選択することで上書きできます。 |
4000 |
HttpStreamingFrameRate |
フレームベースのフラグメント継続時間の設定の場合、これはソースコンテンツのフレームレートです。 |
なし |
HttpStreamingFramesPerKeyframeInterval |
フレームベースのフラグメント継続時間の設定の場合、これは各キーフ レーム間隔のフレーム(ピクチャのグループ)の数です。 |
なし |
HttpStreamingKeyframeIntervalsPerFragment |
フレームベースのフラグメント継続時間の設定の場合、これは 1 フラグ メントあたりのキーフレーム間隔(GOP)の数です。 |
1 |
ライブ HLS のサーバーレベルの設定
Apache httpd.conf 内の次のディレクティブを設定して、サーバー上のすべてのライブ HLS イベントの時間ベースのフラグメントサイズを設定します。
ディレクティブ |
説明 |
デフォルト値 |
HLSMediaFileDuration |
TS ファイルの継続時間(ミリ秒単位)。メディアのキーフレーム間隔の倍数となる値を使用します。 |
8000 |
ライブ HDS のアプリケーションレベルとイベントレベルの設定
アプリケーションレベルでフラグメントサイズを設定するには、Live Packagerアプリケーション(デフォルトでは
livepkgr)のディレクトリ内の Application.xml ファイルを使用します。
イベントレベルでフラグメントサイズを設定するには、ライブイベントディレクトリ(デフォルトでは
applications/livepkgr/events/_definst_/liveevent)内の Event.xmlファイルを使用します。
<Recording> コンテナー内のエレメントを使用して、サーバーがディスクにファイルを書き込む方法を設定します。 Application.xml ファイルの場合、エレメントは //Application/HDS にあります。Event.xml ファイルの場合、エレメントは //Event にあります。
要素 |
説明 |
デフォルト値 |
/Recording |
ディスクへのファイルの書き込み方法を設定するセクション。 |
なし |
/Recording/FragmentDuration |
各フラグメントの長さ(ミリ秒単位)。各セグメントは 1 つ以上のフラグメントを含むことができます。 時間ベースの設定。 |
4000 |
/Recording/FramePrecision |
フラグメント実行テーブルの丸め精度(フレーム単位)。フレーム単位は指定されているフレームレートから得られます (1/ レート)。 フレームベースの設定。 |
1 |
/Recording/FrameRate |
元のコンテンツのフレームレート(フレーム数 / 秒(fps)単位)。値は浮動小数点数です。NTSC の場合は値 29.97 を使用します。 フレームベースの設定 |
なし |
/Recording/FramesPerKeyframeInterval |
各キーフレーム間のフレーム数。例えば、30 fps のビデオでキーフレームが 2 秒ごとの場合は、1 キーフレーム間隔に 60フレームが含まれます。 フレームベースの設定。 |
なし |
/Recording/KeyframeIntervalsPerFragment |
1 フラグメントのキーフレーム間隔の数。デフォルト値は 1で、フラグメントのサイズがキーフレーム間隔と同じであることを意味します。 フレームベースの設定。 |
1 |
/Recording/SegmentDuration |
各セグメントの長さ(ミリ秒単位)。各 .f4f ファイルは 1 つのセグメントを含みます。
時間ベースの設定。フレームベースの設定は、時間ベースの設定よりも優先されます。 |
400000 |
ライブ HLS のアプリケーションレベルとイベントレベルの設定
アプリケーションレベルでフラグメントサイズを設定するには、Live Packagerアプリケーション(デフォルトではlivepkgr)のディレクトリ内の Application.xml ファイルを使用します。
イベントレベルでフラグメントサイズを設定するには、ライブイベントディレクトリ(デフォルトではapplications/livepkgr/events/_definst_/liveevent)内の Event.xmlファイルを使用します。
<Recording>および <HLS>コンテナー内のエレメントを使用して、サーバーがディスクにファイルを書き込む方法を設定します。Application.xmlファイルの場合、エレメントは //Application/HDSにあります。Event.xmlファイルの場合、エレメントは//Event/にあります。
要素 |
説明 |
デフォルト値 |
/Recording/FrameRate |
元のコンテンツのフレームレート(フレーム数 / 秒(fps)単位)。値は浮動小数点数です。NTSC の場合は値 29.97 を使用します。 フレームベースの設定。 |
なし |
/Recording/FramesPerKeyframeInterval |
各キーフレーム間のフレーム数。例えば、30 fps のビデオでキーフレームが 2 秒ごとの場合は、1 キーフレーム間隔に 60フレームが含まれます。 フレームベースの設定。 |
なし |
/HLS/KeyframeIntervalPerMediaFile |
メディアファイル(TS)あたりのキーフレーム間隔の数。デフォルト値は 1 で、フラグメントのサイズがキーフレーム間隔と同じであることを意味します。 フレームベースの設定。 |
1 |
/HLS/MediaFileDuration |
各メディアファイル(TS)の長さ(ミリ秒単位)。
時間ベースの設定。フレームベースの設定は、時間ベースの設定よりも優先されます。 |
8000 |
フレームに基づいたライブ HDS および HLS のフラグメントサイズの指定
HDS には、KeyframeIntervalsPerFragment、FrameRate、FramesPerKeyframeInterval、FramePrecision の各エレメントを使用します。
HLS には、FrameRate、FramesPerKeyframeInterval、KeyframeIntervalPerMediaFile の各エレメントを使用します。
<Event>
<EventID>liveevent</EventID>
<Recording>
<FrameRate>29.97</FrameRate>
<FramesPerKeyframeInterval>120</FramesPerKeyframeInterval>
<KeyframeIntervalsPerFragment>1</KeyframeIntervalsPerFragment>
<FramePrecision>1</FramePrecision>
</Recording>
<HLS>
<KeyframeIntervalPerMediaFile>3</KeyFrameIntervalPerMediaFile>
</HLS>
</Event>
サーバーは、次の式に従って HLSメディアファイルの継続時間を計算します。
MediaFileDurationInSeconds = FramesPerKeyframeInterval * KeyframeIntervalPerMediaFile / FrameRate
時間に基づいたライブ HDS および HLS のフラグメントサイズの指定
HDS には、FragmentDuration、SegmentDuration の各エレメントを使用します。
HLSには、MediaFileDurationエレメントを使用します。
FragmentDuration および MediaFileDuration エレメントを使用します。
<Event>
<EventID>liveevent</EventID>
<Recording>
<FragmentDuration>4000</FragmentDuration>
<SegmentDuration>400000</SegmentDuration>
</Recording>
<HLS>
<MediaFileDuration>8000<MediaFileDuration>
</HLS>
</Event>
オンデマンド HDS および HLSのフラグメントサイズの設定
オンデマンド HDS のサーバーレベルの設定
Apache httpd.conf 内の次のディレクティブを設定して、サーバー上のすべてのオンデマンド HDS のフラグメントサイズを設定します。
ディレクティブ |
説明 |
デフォルト値 |
HttpStreamingFragmentDuration |
デフォルトのフラグメント継続時間(ミリ秒単位)。 これは、時間ベースの設定です。フレームベースの設定は、時間ベースの設定よりも優先されます。 |
4000 |
HttpStreamingFrameRate |
ソースコンテンツのフレームレート。 フレームベースの設定。 |
なし |
HttpStreamingFramesPerKeyframeInterval |
各キーフレーム間隔のフレーム(ピクチャのグループ)の数。 フレームベースの設定。 |
なし |
HttpStreamingKeyframeIntervalsPerFragment |
1 フラグメントのキーフレーム間隔(GOP)の数。 フレームベースの設定。 |
1 |
オンデマンド HLS のサーバーレベルの設定
Apache httpd.conf 内の次のディレクティブを設定して、サーバー上のすべてのオンデマンド HLS のフラグメントサイズを設定します。
ディレクティブ |
説明 |
デフォルト値 |
HLSMediaFileDuration |
TS ファイルの継続時間(ミリ秒単位)。メディアのキーフレーム間隔の倍数となる値を使用します。 |
8000 |
HttpStreamingFrameRate |
ソースコンテンツのフレームレート。これはフレームベースの設定です。 |
なし |
HLSKeyframeIntervalsPerMediaFile |
メディアファイル1つあたりのキーフレーム間隔(GOP)の数。これはフレームベースの設定です。 |
1 |
HttpStreamingFramesPerKeyframeInterval |
各キーフレーム間隔(GOP)のフレーム数。これはフレームベースの設定です。 |
なし |
オンデマンド HDS のストリームレベルの設定
一連のオンデマンドメディアファイル(または単一のファイル)を設定するには、jit.confファイルをメディアファイルと同じディレクトリにコピーします。ディレクトリ内のすべてのメディアファイルは同じ jit.confファイルを使用します。
jit.conf ファイルを次のエレメントと共に使用し、ストリームレベルで HDS のフラグメントサイズを設定します。
要素 |
説明 |
デフォルト値 |
//manifest/hds:fragment-duration |
コンテンツのセットのフラグメント継続時間(秒単位)。値には小数を指定できます(例えば、2002 ミリ秒を指定するには、値 2.002 を使用します)。
時間ベースの設定。フレームベースの設定は、時間ベースの設定よりも優先されます。 |
なし |
//manifest/hds:frame-rate |
コンテンツセットのフレームレート。単位はフレーム / 秒で、小数(NTSC の場合は 29.97)で指定できます。 フレームベースの設定。 |
なし |
//manifest/hds:frames-per-keyframe-interval |
キーフレーム間隔あたりのフレーム(GOP)の数。単位はフレームで、整数値にする必要があります。 フレームベースの設定。 |
なし |
//manifest/hds:keyframe-intervals-per- fragment |
1 フラグメントのキーフレーム間隔の数。単位はフラグメントあたりのキーフレーム間隔で、整数値にする必要があります。 フレームベースの設定。 |
1 |
オンデマンド HLS のストリームレベルの設定
一連のオンデマンドメディアファイル(または単一のファイル)を設定するには、jit.confファイルをメディアファイルと同じディレクトリにコピーします。ディレクトリ内のすべてのメディアファイルは同じ jit.confファイルを使用します。
jit.conf ファイルを次のエレメントと共に使用し、ストリームレベルで HLS のフラグメントサイズを設定します。
要素 |
説明 |
デフォルト値 |
//manifest/hds:frame-rate |
コンテンツセットのフレームレート。単位はフレーム / 秒で、小数(NTSC の場合は 29.97)で指定できま す。 フレームベースの設定。 |
なし |
//manifest/hds:frames-per-keyframe-interval |
キーフレーム間隔あたりのフレーム(GOP)の数。 単位はフレームで、整数値にする必要があります。 フレームベースの設定。 |
なし |
//manifest/hds:hls |
Apple HTTP Live Streaming 設定のコンテナー。 |
なし |
//manifest/hds:hls/hds:keyframe-intervals- per-media-file |
TS ファイル継続時間あたりのキーフレーム間隔の数。 値は整数にする必要があります。 フレームベースの設定。 |
なし |
//manifest/hds:hls/hds:media-file-duration |
このファイルに関連付けられたコンテンツのセットの TS ファイル継続時間(ミリ秒単位)。フラグメント継続時間の倍数である値を使用します。 時間ベースの設定。フレームベースの設定は、時間ベースの設定よりも優先されます。 |
なし |
フレームに基づいたオンデマンド HDS および HLS のフラグメントサイズの指定
HDSには、hds:frame-rate、hds:frames-per-keyframe-interval、hds:keyframe-intervals-per-fragment の各エレメントを使用します。
HLSには、hds:frame-rate、hds:frames-per-keyframe-interval、hds:keyframe-intervals-per-media-file の各エレメントを使用します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns="http://ns.adobe.com/f4m/1.0" xmlns:hds="http://ns.adobe.com/hds-package/1.0">
<hds:frame-rate>29.97</hds:frame-rate>
<hds:frames-per-keyframe-interval>60</hds:frames-per-keyframe-interval>
<hds:keyframe-intervals-per-fragment>2</hds:keyframe-intervals-per-fragment>
<hds:hls>
<hds:keyframe-intervals-per-media-file>2</hds:keyframe-intervals-per-media-file>
</hds:hls>
</manifest>
時間に基づいたオンデマンド HDS および HLS のフラグメントサイズの指定
HDS には、hds:fragment-duration エレメントを使用します。
HLS には、hds:media-file-duration エレメントを使用します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns="http://ns.adobe.com/f4m/1.0" xmlns:hds="http://ns.adobe.com/hds-package/1.0">
<hds:fragment-duration>8000</hds:fragment-duration>
<hds:hls>
<hds:media-file-duration>8000</hds:media-file-duration>
</hds:hls>
</manifest>
既知の問題
Apache httpd.conf 内の次のディレクティブを設定して、サーバー上のすべてのライブ HDS イベントのフラグメントサイズを設定します。通常の録画がオンのときは、もしTSの継続時間がフラグメントの継続時間よりも短かった場合、HLSモジュールはTSリクエストに対しHTTP 503 (Service Unavailable)エラーを断続的に返します。
Adobe Media Server 5
IOバッファーは、Apache f4fモジュールの読み取りと書き込みのパフォーマンスを向上します。IOバッファーは、ディスクファイルをメモリ内のバッファーにロードします。システムコールを作成するのではなく、メモリ内のバッファーに対する読み取りと書き込みを行います。
注意:この機能は、HTTP DynamicStreaming と HTTP Live Streaming の両方に影響を与えます。バッファーがいっぱいになったとき、または読み取り / 書き込みヘッドがバッファーの境界を超えて移動する必要がある場合、サーバーはバッファーの内容をディスクファイルにコミットし、新しい内容をディスクファイルからバッファーにプリロードします。
IO バッファーのデフォルト値は 4096 バイトです。値を増減するには、Event.xml ファイルを編集します。4096 バイトの倍数を使用します。
1 Event.xml ファイルをテキストエディターで開きます。
ライブ HTTP ストリーミングの場合、Event.xml ファイルはライブイベントのフォルダーにあります。例えば、rootinstall/applications/livepkgr/events/_definst_/liveevent/Event.xml です。
2 IOBufferSize を、基になるオペレーティングシステムのクラスタサイズの倍数の値に設定します。IOBufferSize は、IO バッファーのサイズ(バイト単位)です。
<Event>
<EventID>liveevent</EventID>
<Recording>
<FragmentDuration>4000</FragmentDuration>
<IOBufferSize>4096</IOBufferSize>
</Recording>
</Event>
3 ファイルを保存します。
Adobe Media Server 5
Application.xml ファイルまたは Event.xml ファイルに DiskManagementDuration 設定パラメーターを設定し、ディスク上の最新のライブコンテンツ量を指定します。アプリケーションレベルで設定された制限はイベントレベルで上書きできません。Application.xml ファイルに制限が設定された場合、Event.xml ファイルにはその制限時間と同じ時間またはそれより短い時間を設定できます。
すべてのライブ HTTPストリーミングは、ディスク管理を使用して、ディスクがいっぱいにならないようにします。ディスク管理により、年中無休のライブストリーミングイベントを作成できます。また、DVRを使用している場合は、DVR設定に関連付けてディスク管理を設定します。「DVR の設定 (HDS)」を参照してください。
デフォルトでは、ディスク管理は 3 時間ライブストリームを継続します。サーバーはコンテンツを常にチェックし、コンテンツの継続時間が DiskManagmentDurationの値を上回ると、制限を超えたセグメントの .f4fファイルおよび .f4xファイルを削除します。
SegmentDuration または DiskManagmentDuration に値がある場合(デフォルトでは両方とも値がある)、サーバーが記録を開始するためには、次の式が true である必要があります。
FragmentDuration < SegmentDuration < DiskManagementDuration
また、SegmentDurationの値は、0より大きくなる必要があります(値 0で 1セグメントが作成されます)。SegmentDuration の値は、セグメントを削除する速度を指定します。SegmentDurationの値が小さければ小さいほど速くセグメントが削除されます。
サーバーは、使用可能な全コンテンツの合計継続時間を維持します。セグメントが作成されると、サーバーはディスク管理ウィンドウにあるフラグメントがセグメントにないかどうかを確認します。フラグメントがある場合、サーバーはブートストラップエントリからそのセグメントを削除してから、ディスクからそのセグメントを削除します。
注意:この動作は、FragmentDuration が SegmentDuration より大きくなることを許可していた Flash Media Server 4.0 からの変更点になります。
エレメント |
デフォルト値 |
説明 |
DiskManagementDuration |
3 |
サーバー上のコンテンツの最大継続時間(時間単位)。デフォルト値は 3 です。小数値を使用して分単位を指定します。
|
Application.xml ファイルの DiskManagementDuration の値は、Event.xml ファイルの値で上書きできません。値が
Application.xml で設定されていない場合は、Event.xml で値を設定できます。
Application.xmlファイルで、ディスク管理の継続時間を 4時間に設定する方法を以下に示します。この値は、このアプリケーションで実行されているすべてのライブイベントに影響を与えます。
<Application>
...
<HDS>
<Recording>
<FragmentDuration>4000</FragmentDuration>
<SegmentDuration>16000</SegmentDuration>
<DiskManagementDuration>4</DiskManagementDuration>
</Recording>
</HDS>
</Application>
Event.xml ファイルで、ディスク管理の継続期間を 1 時間に設定する方法を以下に示します。この値は、「liveevent」と呼ばれるイベントのサーバー上のコンテンツの継続期間を制限します。
<Event>
<EventID>liveevent</EventID>
<Recording>
...
<DiskManagementDuration>1</DiskManagementDuration>
</Recording>
</Events>
詳細については、「ライブ HTTP ストリーミングの設定」を参照してください。
ライブおよびオンデマンドのHTTP DynamicStreamingのパフォーマンスを向上するために、オリジンサーバーで Apacheコンテンツキャッシュを有効にします。キャッシュが有効になると、サーバーは、HDS用にパッケージ化したコンテンツをキャッシュします。サーバーは要求を受信すると、コンテンツを配信する前にキャッシュを確認します。コンテンツキャッシュは、デフォルトでは無効になっています。
1 htcacheclean ツールを実行します。ディスクキャッシュが使用するストレージ容量を制限するには、コンテンツキャッシュが有効なときに Apache htcacheclean ツールを実行します。このツールは手動で、またはデーモンとして実行できます。htcacheclean ツールはrootinstall/Apache2.2/bin/ にあります。ツールの実行方法の詳細については、「Apache documentation」を参照してください。
2 Apache httpd.conf ファイルで、キャッシュ設定セクションを非コメント化します。
# Uncomment this to enable caching
LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
LoadModule disk_cache_module modules/mod_disk_cache.so
<IfModule mod_disk_cache.c>
CacheEnable disk /hds-vod
CacheEnable disk /hls-vod
CacheRoot cacheroot
CacheMaxFileSize 10000000
CacheLock On
</IfModule>
</IfModule>
CacheRoot ディレクティブで指定されたディレクトリが存在していることを確認します。デフォルトのcacheroot ディレクトリはrootinstall/Apache2.2/cacheroot にあります。
3 Apache を再起動します。
コンテンツキャッシュの詳細については、「Apache documentation」を参照してください。
重要:コンテンツの暗号化とフラグメント化の両方に HTTP Dynamic Streaming Packagerを使用してください。コンテンツの暗号化に Adobe Access パッケージ化ツールを使用しないでください。HTTP DynamicStreaming Packager は、既に暗号化されているコンテンツをフラグメント化できません。
HTTP Dynamic Streaming でライブまたはオンデマンドのコンテンツを配信し、そのコンテンツをAdobe Access で保護するには、Adobe Access Server for ProtectedStreaming を使用します。このサーバーは、HTTP Dynamic Streaming での使用に最適化された Adobe Access ライセンスサーバーの実装です。「Adobe Adobe Access Protecting Content」を参照してください。
注意:Adobe Access SDK および Adobe Access ライセンスサーバー参照実装も、HTTP Dynamic Streaming に対するライセンスを発行できます。
Adobe Access Server for ProtectedStreaming をデプロイした後に、コンテンツをリアルタイムでパッケージ化および暗号化するように Adobe Media Server を設定します。
ライブコンテンツを暗号化するための Adobe Media Server の設定
ライブコンテンツの暗号化は、Adobe Accessを使用して、アプリケーションレベルおよびイベントレベルで設定することができます。
Adobe Access をアプリケーションレベルで設定するには、次の場所にある Application.xml ファイルを使用します。
rootinstall/applications/livepkgr/Application.xml
Application.xml ファイルでは、FlashAccessV2 コンテナーエレメントは次の場所にあります。
//Application/HDS/Recording/ContentProtection/FlashAccessV2
Adobe Access をイベントレベルで設定するには、次の場所にある Event.xml ファイルを使用します。
rootinstall/applications/livepkgr/events/_definst_/liveevent/Event.xml
Event.xml ファイルでは、FlashAccessV2 コンテナーエレメントは次の場所にあります。
//Event/Recording/ContentProtection/FlashAccessV2
1 rootinstall/applications/livepkgr/events/_definst_/liveevent/Event.xml をテキストエディターで開きます。
2 ストリームを暗号化するために必要な XML タグを追加します。Event.xml ファイルのサンプルを次に示します。
<Event>
<EventID>liveevent</EventID>
<Recording>
<FragmentDuration>4000</FragmentDuration>
<SegmentDuration>10000</SegmentDuration>
<ContentProtection enabled="true">
<ProtectionScheme>FlashAccessV2</ProtectionScheme>
<FlashAccessV2>
<ContentID>foo</ContentID>
<CommonKeyFile>common-key.bin</CommonKeyFile>
<LicenseServerURL>http://dill.corp.adobe.com:8090</LicenseServerURL>
<TransportCertFile>production_transport.der</TransportCertFile>
<LicenseServerCertFile>license_server.der</LicenseServerCertFile>
<PackagerCredentialFile>production_packager.pfx</PackagerCredentialFile>
<PackagerCredentialPassword>hbXX5omIhzI=</PackagerCredentialPassword>
<PolicyFile>policy01.pol</PolicyFile>
</FlashAccessV2>
</ContentProtection>
</Recording>
</Event>
注意:Live Packager で使用する証明書は、ライセンスサーバーと一致している必要があります。
要素 |
説明 |
デフォルト値 |
FlashAccessV2 |
コンテンツを保護するためにAdobe Accessで使用される設定のコンテナー。 |
なし |
FlashAccessV2/CommonKeyFile |
コンテンツ暗号化キーの生成に使用する共通キーファイルへのパス。パスは、設定ファイルへの絶対パスまたは相対パスにする必要があります。 コンテンツ暗号化キーを生成するためにコンテンツ ID で使用される基本キー。これは、 16 バイト/ 128 ビットのバイナリキーを含むバイナリファイルです。 アダプティブビットレートストリーミングの場合、コンテンツのセット全体で同じ共通キーとコンテンツ ID を使用します。同じキーと ID を使用すると、単一のライセンスでコンテンツのセットを復号化できます。 |
なし |
FlashAccessV2/ContentID |
コンテンツ暗号化キーを生成するために共通キーで使用されるコンテンツ ID。 |
なし |
FlashAccessV2/LicenseServerCertFile |
コンテンツの保護に使用される DER でエンコードされたライセンスサーバー証明書ファイル。 |
なし |
FlashAccessV2/LicenseServerURL |
このコンテンツのライセンス取得を処理するライセンスサーバーの URL。 |
なし |
FlashAccessV2/PackagerCredentialFile |
Packager の保護資格情報を含む PFX ファイル。 |
なし |
FlashAccessV2/PackagerCredentialPassword |
Packager の資格情報を保護するために使用されるパスワード文字列。 |
なし |
FlashAccessV2/PolicyFile |
このコンテンツのポリシーが格納されているファイル。現在、このツールでパッケージ化されるコンテンツに適用できるポリシーは 1 つだけです。 |
なし |
FlashAccessV2/TransportCertFile |
DER でエンコードされたトランスポート証明書ファイル。 |
なし |
Live Packager が HTTP DynamicStreaming に必要なフラグメント化および保護されたファイルを出力します。各フラグメントは、CDN キャッシュとブラウザーキャッシュの両方で永続的に保護されます。
オンデマンドコンテンツを暗号化するための Adobe Media Server の設定
1 jit.conf という名前のファイルを作成し、オンデマンドメディアファイルと同じフォルダーにコピーします。jit.conf ファイルの設定が、フォルダー内のすべてのファイルに適用されます。
2 ストリームを暗号化するために必要な XML タグを追加します。jit.conf ファイルのサンプルを次に示します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns="http://ns.adobe.com/f4m/1.0" xmlns:hds="http://ns.adobe.com/hds-package/1.0">
<hds:frame-rate>29.97</hds:frame-rate>
<hds:frames-per-keyframe-interval>60</hds:frames-per-keyframe-interval>
<hds:content-protection enabled="true">
<hds:protection-scheme>FlashAccessV2</hds:protection-scheme>
<hds:FlashAccessV2>
<hds:content-id>myfile.manifest</hds:content-id>
<hds:common-key-file>common.bin</hds:common-key-file>
<hds:license-server-url>http://mylicenseserver.myhost.com</hds:license-server-url>
<hds:transport-cert-file>transport.der</hds:transport-cert-file>
<hds:license-server-cert-file>server.der</hds:license-server-cert-file>
<hds:packager-credential-file>packager.pfx</hds:packager-credential-file>
<hds:packager-credential-password>??????</hds:packager-credential-password>
<hds:policy-file>policy.pol</hds:policy-file>
</hds:FlashAccessV2>
</hds:content-protection>
</manifest>
要素 |
説明 |
デフォルト値 |
//manifest/hds:content-protection/hds:flash-access/hds:common-key-file |
共通キーファイルへのパス。ファイルには、16 バイト/ 128 ビットのランダムキーが含まれます。 パスは、jit.conf ファイルへの絶対パスまたは相対パスにする必要があります。 |
なし |
//manifest/hds:content-protection/hds:flash-access/hds:content-id |
コンテンツの保護に使用されるコンテンツ ID。指定しない場合、salt がファイル名になります。指定された場合、salt はディレクリ内のすべてのコンテンツで共有されます。 |
なし |
//manifest/hds:content-protection/hds:flash-access/hds:license-server-url |
ライセンスサーバーの URL。 |
なし |
//manifest/hds:content-protection/hds:flash-access/hds:transport-cert-file |
トランスポート証明書ファイルへのパス。ファイルはDER 形式です。 パスは、jit.conf ファイルへの絶対パスまたは相対パスにする必要があります。 |
なし |
//manifest/hds:content-protection/hds:flash-access/hds:license-server-cert-file |
トランスポート証明書ファイルへのパス。ファイルはDER 形式です。 パスは、jit.conf ファイルへの絶対パスまたは相対パスにする必要があります。 |
なし |
要素 |
説明 |
デフォルト値 |
//manifest/hds:content-protection/hds:flash-access/hds:packager-credential-file |
Packager の資格情報に関する証明書ファイルへのパス。ファイルは PFX 形式です。 パスは、jit.conf ファイルへの絶対パスまたは相対パスにする必要があります。 |
なし |
//manifest/hds:content-protection/hds:flash-access/hds:packager-credential-password |
Packager の資格情報のパスワード。 |
なし |
//manifest/hds:content-protection/hds:flash-access/hds:policy-file |
ポリシーファイルへのパス。ファイルはAdobe Accessポリシー形式です。
パスは、jit.conf ファイルへの絶対パスまたは相対パスにする必要があります。 |
なし |
ライブストリームのパブリッシュ
❖ サポートされているエンコーダーから livepkgr サービスへライブストリームまたはマルチビットレートストリームをパブリッシュします。Adobe Access には、特別な設定は不要です。
暗号化されたストリームの再生
❖ OSMF Media Player は次を実行します。
a ファイルフラグメントを要求し、シームレスにそれを再生します。
b Adobe Access Server for Protected Streamingからコンテンツのライセンスを取得します。コンテンツのライセンスには、有効なクライアントでコンテンツを再生するために必要なキーが含まれます。
c コンテンツをリアルタイムで復号化します。
最終更新日 2013/9/30