ADOBE® MEDIA SERVER 5.0.3
デベロッパーズガイド
![]() ![]() ![]() |
翻訳:株式会社サムライズ |
---|
注意
Adobe Media Server® バージョン 5についての本ドキュメントは第三者によって翻訳されたものであり、Adobe Systems Incorporated(アドビ システムズ社)は本翻訳物の正確性や完全性を査閲していません。
カスタム Media Player の構築
ライブサービスと VODサービスの MediaPlayerの構築
アドビ システムズ社は、Media Playerをより簡単に構築できるようにするために、Open Source Media Framework(OSMF)を開発しました。OSMFは、Flashプラットフォームに基づいて堅牢で多彩な機能のビデオ Playerおよびアプリケーションを構築するためのオープンソフトウェアフレームワークです。OSMFライブラリでのMedia Playerの構築に関する詳細については、「Building streaming video players in Flash with the Adobe Open Source Media Framework」を参照してください。
また、ActionScript を使用して、ゼロから Media Player を新規に構築することもできます。詳しくは、以下のトピックを参照してください。
• 「HTTP Dynamic Streaming Media Player の構築」
ストリーミングサービスへの接続
すべての Adobe Media Server アプリケーションと同様に、ストリーミングサービスには、次の形式のNetConnection.connect() URI が必要です。
rtmp://ams-ip-or-dna/serviceName/[formatType:][instanceName/]fileOrStreamName
hostName Adobe Media Server のドメイン名です。
serviceName live または vod のいずれかです。
instanceName クライアントの接続先がデフォルトのインスタンスの場合には、インスタンス名を省略するか、または_definst_を使用することができます。クライアントの接続先が、room1 など、独自に作成したインスタンスの場合は、その名前を使用します。
formatType mp3 ファイルの場合は mp3:、MP4/F4V ファイルの場合は mp4:、FLV ファイルの場合は不要です。
fileOrStreamName ファイル名(my_video.mp4 など)またはパス(subdir/subdir2/my_video.mp4 など)。例えば rtmp://www.examplemediaserver.com/vod/mp4:ClassicFilms/AnOldMovie.mp4。MPEG-4 ベースのファイルでは、サーバー上のファイルにファイル名拡張子(mp4、.f4v など)が使用されている場合は、これを指定します。ストリームがライブで、パブリッシャがファイル名拡張子を指定している場合は、これを指定します。
サポートされていない ActionScript API
VOD サービスやライブサービスのクライアントは、リモート共有オブジェクト(SharedObject.getRemote())を除いて、すべての ActionScript APIを利用することができます。
ストリーミングサービス用にサーバーサイドコードを編集することはできません。ただし、各サービスにはサーバーから情報にアクセスできるカスタム APIがあります。クライアントサイドコードから NetConnection.call()メソッドを呼び出し、呼び出す APIの名前を渡します。
関連項目
特定のドメインからの接続の許可
デフォルトでは、ライブサービスや VODサービスには、すべてのドメインのクライアントが接続することができます。クライアントが接続可能なドメインは制限することができます。
❖ rootinstall/applications/live フォルダーまたは rootinstall/applications/vod フォルダーに移動し、次のいずれかの操作を行います。
• SWF クライアントのドメインを追加するには、allowedSWFdomains.txt ファイルを編集します。
• HTML クライアントのドメインを追加するには、allowedHTMLdomains.txt ファイルを編集します。
これらの TXT ファイルには、ドメインの追加に関する詳細な情報が記載されています。
生のオーディオとビデオデータへのアクセス
注意:この機能は、Access プラグインを使用した場合にのみ Adobe Media Server Standard でサポートされます。
Flash Media Server 3 と Flash Player 9.0.115.0 から、ストリームの生のオーディオとビデオのデータにアクセスできます。このデータを使用して、アプリケーション内でスナップショットを作成します。データにアクセスするには、ActionScript
3.0 の BitmapData.draw() メソッドと SoundMixer.computeSpectrum() メソッドを呼び出します。詳細については、『Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド』を参照してください。
Adobe Media Server では、デフォルトでストリームにアクセスできないようになっています。ストリームへのアクセスを許可するには、次の操作を行います。
1 main.far ファイルを rootinstall/applications/live または rootinstall/applications/vod からrootinstall/samples/applications/live または rootinstall/samples/applications/vod に移動します。FAR ファイルを編集することはできないので、main.far を main.asc に置き換える必要があります。
2 main.asc ファイルを rootinstall/samples/applications/live または rootinstall/samples/applications/vod からrootinstall/applications/live または rootinstall/applications/vod にコピーします。
3 main.asc ファイルをテキストエディターで開きます。
4 次のコードを非コメント化して、すべてのクライアントがすべてのストリームにアクセスできるようにします。
//p_client.audioSampleAccess = "/";
//p_client.videoSampleAccess = "/";
5 main.asc ファイルを保存します。
注意:main.ascの変更を反映させるには、アプリケーションインスタンスの再起動が必要です。
getStreamLength()
getStreamLength(streamObj)
ストリームの長さを秒単位で返します。クライアントサイドスクリプトからこのメソッドを呼び出し、返された値を受け取るために応答オブジェクトを指定します。
使用できるバージョン
Flash Media Server 3、VOD ストリーミングサービス
パラメーター
streamObj Stream オブジェクト。
戻り値
数値。
例
次のクライアントサイドコードは、sample_videoストリームの長さを取得し、値を returnObjに返します。
nc.call("getStreamLength", returnObj, "sample_video");
getPageUrl()
getPageUrl()
クライアントのSWF ファイルが埋め込まれている Web ページの URL を返します。SWF ファイルが Web ページに埋め込まれていない場合、値は SWF ファイルの格納場所です。次のコードは 2 つの例を示しています。
// trace.swf file is embedded in trace.html. getPageUrl returns: http://www.example.com/trace.html
// trace.swf is not embedded in an HTML file. getPageUrl returns: http://www.example.com/trace.swf
値は HTTPアドレスにする必要があります。セキュリティ上の理由から、ローカルファイルアドレス(例えば、file:///C:/Adobe Media Server applications/example.html)は表示されません。
使用できるバージョン
Flash Media Server 3、VOD ストリーミングサービス、ライブストリーミングサービス
例
次の例では、サーバー上で getPageUrl() メソッドを呼び出します。
nc.call("getPageUrl", returnObj);
getReferrer()
getReferrer()
この接続の作成元の SWF ファイルまたはサーバーの URL を返します。
使用できるバージョン
Flash Media Server 3、VOD ストリーミングサービス、ライブストリーミングサービス
例
次のコードは、サーバー上で getReferrer() メソッドを呼び出します。
myNetConnection.call("getReferrer", returnObj);
HTTP Dynamic Streaming Media Player の構築
Open Source Media Framework(OSMF)の使用
HTTP Dynamic Streaming Media Player を構築する必要はありません。Strobe Media Playback と Flash Media
Playback はデフォルトで HDS をサポートします。
カスタムの Player を構築する場合は、OSMF を使用することを強くお勧めします。OSMF は高品質のビデオを配信するために設計されている堅牢なフレームワークです。OSMF Sample Player for HTTP DynamicStreaming を参照実装として使用します。この OSMF Sample Player では ActionScript 3.0 NetStream.appendBytes() API を使用してバイトを Flash Player および AIR に配信します。
ライブ HTTP Dynamic Streaming のアプリケーションフローについて
ストリームを再生するには、Media Player で .f4m ファイルを要求します。Player には、ユーザーがメディアのシーク、一時停止および再生を行うときに追加のファイルを要求するロジックが含まれます。Adobe Media Server Live Packager(livepkgr アプリケーション)では、サーバーでライブストリームを取り込むときやクライアントでオンデマンドメディアファイルを要求するときに、これらのファイルが作成されます。
HTTP
Origin Module は、要求されると
.f4m
ファイルを生成します。ファイルはディスク上に物理的には存在しません。ただし、ライブストリームがパブリッシュを停止しているときでも、ファイルを要求できます。
Adobe HDS を使用してメディアをストリーミングするには、Adobe Mediaマニフェストファイル(.f4m)必要です。
マニフェストファイルには、メディアアセットに関する情報または複数ストリームイベントでの各ストリームに関する情報が含まれます。この情報には、メディアの場所、DRM追加ヘッダーデータ、メディアブートストラップ情報、アダプティブストリーミングビットレートなどを含めることができます。
ストリームがパッケージ化されてディスクに書き込まれるときに、Apache HTTP モジュールではF4M ファイルおよび M3U8 ファイルが作成されます。これらのファイルを作成するには、HTTP モジュールは、Event.xml ファイルのメタデータ(ある場合)及び.f4f、.f4x、.meta、.bootstrap、.drmmeta の各ファイルのデータを使用します。
重要:ファイルを元の場所から移動しないでください。ファイルを生成するために、HTTPモジュールは次の手順を実行します。
1 要求 URL と HttpStreamingLiveEventPath ディレクティブを組み合わせて、ライブイベントを探します。
2 イベントに関するメタデータを Event.xml ファイルとマルチレベルマニフェストファイルから取得します。
3 イベントディレクトリでストリーム記録ファイル(.stream)を検索します。
4 各 .stream ファイルから対応するコンテンツへのパスを取得します。各 .stream ファイルがマニフェストファイル内の<media> エレメントになります。
5 .meta ファイルからメタデータを取得します。
6 ブートストラップ情報およびDRM追加ヘッダーデータへのリンクを作成します(コンテンツが保護されている場合)。
7 生成されたマニフェストドキュメント(.f4m または .m3u8)を返します。
詳細については、adobe.com の「F4M ファイル形式の仕様」を参照してください。
M3U8 ファイルの詳細については、「HTTP Live Streaming Internet-Draft」を参照してください。
Live Packagerは、rootinstall\applications\livepkgr\streams\_definst_ フォルダーに、各ストリームの名前 livestream1、livestream2 および livestream3のフォルダーを作成します。Live Packagerは、各フォルダーに次のファイルを作成します。
• livestream#.bootstrap
• livestream#.control
• livestream#.meta
• livestream#Seg#.f4f
• livestream#Seg#.f4x
これらは、HTTP Dynamic Streaming Media Player で一時停止、早送り、巻き戻しなどを処理するために要求するファイルです。次の表は、各ファイルタイプを示しています。
ファイル |
説明 |
livestream#Seg#.f4f |
セグメント。Live Packager は 1 つ以上の F4F ファイルを出力します。各ファイルには、ソースファイルのセグメントが格納されています。各セグメントには、フラグメント化された(およびオプションで保護された)コンテンツが含まれます。 |
livestream#Seg#.f4x |
各 .f4f ファイルのフラグメントオフセットが一覧表示されているインデックスファイル。Live Packager は 1 つ以上の F4X ファイルを出力します。HTTP Origin Module はこのファイルを使用してフラグメントを配信します。 |
livestream#.meta |
ストリームのメタデータ(ビットレート、画面サイズなど)が格納されています。 |
livestream#.bootstrap |
ストリームのブートストラップ情報が格納されています。 |
livestream#.control |
Live Packager がストリームの状態を管理するために使用する内部メタデータが格納されています。 |
livestream#.drmmeta |
ストリームが Adobe Access 用に暗号化されている場合、追加ヘッダー情報が格納されています。 |
Apache が HTTP Dynamic Streaming 用に設定されているときのこれらのファイルの URL 要求形式を次に示します。
リクエストタイプ |
URL の形式 |
フラグメント |
http://<host>/<location-tag-alias>/streams/<app- name>/streams/<app-instance>/<stream name>Seg<segment #>- Frag<fragment #> メモ:F4F ファイルを直接要求することはできません。フラグメントを要求します。 |
ブートストラップ(.bootstrap) |
http://<host>/<location-tag-alias>/streams/<app- name>/streams/<app-instance>/<stream name>.bootstrap |
HTTP Dynamic Streaming用に Apache を設定する方法の詳細については、「HTTP Dynamic Streaming に対するApache 設定」を参照してください。
ストリーム記録ファイル
ストリーム記録ファイル(.stream)は、ストリームの物理的な場所を含む XMLドキュメントです。サーバーは、着信ストリームがライブイベントと関連付けられるとストリーム記録ファイルを作成します。サーバーはエンコードされた名前で次の場所にファイルを作成します。
applications/appname/events/appinstancename/eventname/MTg1ODAyNjgwNg=.stream
HTTP Origin Module はストリーム記録ファイルを読み取って、ストリームのコンテンツを探します。.stream ファイルの形式を次に示します。
<?xml version="1.0" encoding="UTF-8"?>
<stream xmlns="http://www.adobe.com/liveevent/1.0">
<type>
f4f
</type>
<name>
livestream
</name>
<path>
C:\Program Files\Adobe\Adobe Media Server 5\applications\myapp\streams\_definst_\livestream
</path>
</stream>
サンプル .f4m マニフェストファイル
Player はマニフェストファイルを使用してコンテンツのフラグメントを要求します。次の例では、「myStream」と
「myStream1」の 2 つのストリームがライブイベントと関連付けられています。<media> エレメントは、接頭辞
「/live/streams」でコンテンツの場所への絶対 URL パスを提供します。
.bootstrap および .drmmeta が .f4f ファイルと同じ場所にある場合、<bootstrap> エレメントと <drmAdditionalHeader> エレメントがマニフェストファイルに追加されます。.drmmeta ファイルは複数のストリームで共有できるので、サンプルのマニフェストファイルに含まれる<drmAdditionalHeader> エレメントは 1 つだけです。myStream と myStream1 は両方とも、drmAdditionalHeaderId 属性を通して同じ .drmmeta ファイルを参照します。
metadataエレメントには、Base64エンコーディングの 1つのメディアに対するメタデータが含まれます。メタデータは、ActionScriptの NetStream.onMetaData()イベントでディスパッチされるものと同じ情報です。
<?xml version="1.0" encoding="UTF-8" ?>
<manifest xmlns="http://ns.adobe.com/f4m/1.0">
<id>live_mbr_event</id>
<streamType>live</streamType>
<duration>0</duration>
<bootstrapInfo
profile="named"
url="/live/streams/myStream.bootstrap"
id="bootstrap2267" />
<drmAdditionalHeader
url="/live/streams/myStream.drmmeta"
drmContentId="live_mbr_event"
id="drmMetadata9996" />
<media>
url="/live/streams/myStream"
bitrate="408"
bootstrapInfoId="bootstrap2267"
drmAdditionalHeaderId="drmMetadata9996">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBARo9cKPXCjwAFd2lkdGgAQJQAAAAAAAAABmhlaWdodABAho AAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAMYXVkaW9jb2RlY2lkAgAEbXA0YQAKYXZjcHJvZmlsZQBAWQAA AAAAAAAIYXZjbGV2ZWwAQEAAAAAAAAAABmFhY2FvdAAAAAAAAAAAAAAOdmlkZW9mcmFtZXJhdGUAQD34U+JVay
gAD2F1ZGlvc2FtcGxlcmF0ZQBA53AAAAAAAAANYXVkaW9jaGFubmVscwBAAAAAAAAAAAAJdHJhY2tpbmZvCgAA AAIDAAZsZW5ndGgAQTSinwAAAAAACXRpbWVzY2FsZQBA3UwAAAAAAAAIbGFuZ3VhZ2UCAANlbmcAAAkDAAZsZW 5ndGgAQUCGAAAAAAAACXRpbWVzY2FsZQBA53AAAAAAAAAIbGFuZ3VhZ2UCAANlbmcAAAkAAAk=
</metadata>
</media>
<bootstrapInfo
profile="named"
url="/live/streams/myStream1.bootstrap"
id="bootstrap7975" />
<media>
url="/live/streams/myStream1"
bitrate="1108"
bootstrapInfoId="bootstrap7975"
drmAdditionalHeaderId="drmMetadata9996">
<metadata>AgAKb25NZXRhRGF0YQgAAAAAAAhkdXJhdGlvbgBARo9cKPXCjwAFd2lkdGgAQJQAAAAAAAAABmhlaWdodABAho AAAAAAAAAMdmlkZW9jb2RlY2lkAgAEYXZjMQAMYXVkaW9jb2RlY2lkAgAEbXA0YQAKYXZjcHJvZmlsZQBAWQAA AAAAAAAIYXZjbGV2ZWwAQEAAAAAAAAAABmFhY2FvdAAAAAAAAAAAAAAOdmlkZW9mcmFtZXJhdGUAQD34U+JVay
gAD2F1ZGlvc2FtcGxlcmF0ZQBA53AAAAAAAAANYXVkaW9jaGFubmVscwBAAAAAAAAAAAAJdHJhY2tpbmZvCgAA AAIDAAZsZW5ndGgAQTSinwAAAAAACXRpbWVzY2FsZQBA3UwAAAAAAAAIbGFuZ3VhZ2UCAANlbmcAAAkDAAZsZW 5ndGgAQUCGAAAAAAAACXRpbWVzY2FsZQBA53AAAAAAAAAIbGFuZ3VhZ2UCAANlbmcAAAkAAAk=
</metadata>
</media>
</manifest>
最終更新日 2013/9/30