ADOBE®   MEDIA SERVER 5.0.3

デベロッパーズガイド


翻訳:株式会社サムライズ

 

注意

Adobe Media Server® バージョン 5についての本ドキュメントは第三者によって翻訳されたものであり、Adobe Systems Incorporated(アドビ システムズ社)は本翻訳物の正確性や完全性を査閲していません。

 

カスタム Media Player の構築

 

ライブサービスと VODサービスの MediaPlayerの構築

アドビ システムズ社は、Media Playerをより簡単に構築できるようにするために、Open Source Media FrameworkOSMF)を開発しました。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.mp4MPEG-4         ベースのファイルではサーバー上のファイルにファイル名拡張子(mp4.f4v など)が使用されている場合は、これを指定します。ストリームがライブで、パブリッシャがファイル名拡張子を指定している場合は、これを指定します。

 

サポートされていない ActionScript API

VOD  サービスやライブサービスのクライアントは、リモート共有オブジェクト(SharedObject.getRemote())を除いて、すべての ActionScript APIを利用することができます。

ストリーミングサービス用にサーバーサイドコードを編集することはできません。ただし、各サービスにはサーバーから情報にアクセスできるカスタム APIがあります。クライアントサイドコードから NetConnection.call()メソッドを呼び出し、呼び出す APIの名前を渡します。

 

関連項目

ストリーミングサービス 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の変更を反映させるには、アプリケーションインスタンスの再起動が必要です。

 

ストリーミングサービス API

 

getStreamLength()

getStreamLength(streamObj)

 

ストリームの長さを秒単位で返します。クライアントサイドスクリプトからこのメソッドを呼び出し、返された値を受け取るために応答オブジェクトを指定します。

 

使用できるバージョン

Flash Media Server 3VOD ストリーミングサービス

 

パラメーター

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 3VOD ストリーミングサービス、ライブストリーミングサービス

 

次の例では、サーバー上で getPageUrl() メソッドを呼び出します。

 

nc.call("getPageUrl", returnObj);

 

getReferrer()

getReferrer()

この接続の作成元の SWF ファイルまたはサーバーの URL を返します。

 

使用できるバージョン

Flash Media Server 3VOD ストリーミングサービス、ライブストリーミングサービス

 

次のコードは、サーバー上で 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 Packagerlivepkgr アプリケーション)では、サーバーでライブストリームを取り込むときやクライアントでオンデマンドメディアファイルを要求するときに、これらのファイルが作成されます。

 

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_ フォルダーに、各ストリームの名前 livestream1livestream2 および 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つのメディアに対するメタデータが含まれます。メタデータは、ActionScriptNetStream.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