ADOBE®   MEDIA SERVER 5.0.3

デベロッパーズガイド


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

 

注意

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

 

Fileプラグインの開発

 

Fileプラグインの概要

Fileプラグインを使用すると、サーバーがファイルシステムからコンテンツを読み取る場所と方法を制御することができます。このプラグインは、オペレーティングシステムのファイル I/Oメカニズムとサーバーの間のインターフェイスを提供します。サンプルファイルの設定または変更を行うと、デフォルトのオペレーティングシステムに基づくファイルシステムI/Oに代わるものを作成することができます。

サーバーの以前のバージョンでは、ファイルシステムへの同期アクセスをサポートしていました。ファイルの読み取り操作を要求したときには、そのたびにキューにあるそれより前の要求が完了するまで待つ必要がありました。Fileプラグインは非同期アクセスをサポートしており、ネットワークベースのファイル I/Oをより簡単に実装できるようになっています。

次のことを実行するように Fileプラグインをコーディングすることができます。

•   HTTPを介してリモートからファイルを取得し、コアサーバープロセスを通じてそれらのファイルをクライアントに配信することで、コンテンツの管理作業の負荷を軽減します。

•   別の物理的な場所にファイルを再マッピングします。

•   外部 SWF ファイルを取得して検証します。

注意File プラグインはストリームファイルと SWF ファイルで使用します。

 

カスタム Fileプラグインが存在しないか、またはアクティブになっていない場合、サーバーは下位互換性のために標準のオペレーティングシステムのファイルシステムを使用します。使用できる Fileプラグインは 1つだけです。

 

 

関連項目

Flash Media Server プラグイン API 参照

 

サーバーの呼び出しに対する応答

Fileプラグインは非同期です。サーバーがプラグインを呼び出したときに、プラグインは直ちには応答しません。サーバーがプラグインを呼び出すと、プラグインは応答インターフェイスによってサーバーに呼び出しを返します。

 

サーバーがプラグイン上の関数を呼び出したときに、プラグインインターフェイスはその操作が失敗したことを示すエラーコード(-1)を返すことができます。関数がエラーを返す場合、プラグインがサーバーに呼び出しを返さないようにする必要があります。

プラグインへの呼び出しが正常に戻る(0 が返される)場合、プラグインはサーバーに呼び出しを返し、サーバーから受け取ったコンテキストを渡す必要があります。

close()および remove()の呼び出しは、この規則に対する例外です。サーバーがプラグイン上の close()メソッドと remove() 関数を呼び出した場合、サーバーは応答に関与しません。コールバックが発生する前に要求に関連付けられているリソースを解放するために、サーバーは pCtxポインターとして NULLを渡すことがあります。コンテキストが NULLになっている場合、サーバーに呼び出しを返す必要はありません。プラグインが NULL コンテキストとともにサーバーに呼び出しを返した場合、サーバーはそれを無視します。

 

検証のための外部 SWF ファイルの取得

SWFファイルを検証することで、許可されたアプリケーションだけが Adobe Media Serverの特定のインスタンスにアクセスできるように制限されます。この方法によって、リソースをストリーミングしようとするアプリケーションが第三者によって独自に作成されないようにします。

 

Content Distribution Network では、検証するSWF ファイルは外部コンテンツリポジトリ、またはクラスタ内の別のサーバーにあります。サーバーで検証するために、File プラグインを使用して、外部の場所に格納されている SWF ファイルを取得することができます。File プラグインを使用することによって、SWF ファイルを Adobe Media Server にローカルに保存する必要がなくなります。開発者は、サーバーに影響を与えずに SWF ファイルを頻繁に更新することができます。File プラグインを使用することで、開発者によるコンテンツ管理がシンプルかつ容易になります。

Fileプラグインを使用する場合、アプリケーションの種類に関わらず、サーバーは SWFファイルをファイルレベルで検証します。SWFの検証は、Fileプラグインを通じてアプリケーション単位で有効にすることはできません。

File プラグインを使用して SWF ファイルを取得できるのはバージョン 1.0 のプラグイFlash Media Server 3.5以降)だけです。

Fileプラグインによって SWFファイルを検証するには、次のワークフローに従います。

    Application.xml SWF 検証の有効化

    Server.xml SWF 検証の有効化

•   File プラグインの実装

 

Application.xml で SWF 検証の有効化

1   XML エディターで Application.xml を開きます。

2   SWFVerificationタグの enabled属性を trueに設定します。

 

<SWFVerification enabled="true">

 

このタグによってそのファイルが vhostレベルの XMLファイルでもアプリケーションレベルの XMLファイルであっても、すべてのアプリケーションの検証が可能になります。

 SWFFolder タグは空のままにします。この設定により、デフォルトの SWFFolder の値がサーバーからプラグインに渡されます。デフォルト値は、アプリケーションのフォルダーの下の SWF フォルダーです。例えば、applications/application_name/SWFs です。

Fileプラグインは、この値を外部のコンテンツリポジトリにリダイレクトする必要があります。

4 (オプション)追加の検証タグを設定します。

 

Server.xml で SWF 検証の有効化

1   XML エディターで Server.xml を開きます。

2   Plugins タグでFilePlugin タグの enabled 属性を true に設定します。

 

<Plugins>

<FilePlugin enabled="true">

<Content type="Streams">true</Content>

<Content type="SWF">false</Content>

</FilePlugin>

</Plugins>

 SWF ファイルの検証を有効にするには<Content type="SWF"> 属性を true に設定します。

4  (オプション)グローバル検証を設定するにはSWFFolderタグを空のままにします。それによって、デフォルトの SWFFolderの値がサーバーからプラグインに渡されますFileプラグインはこの値を外部のコンテンツリポジトリにリダイレクトする必要があります。

グローバル検証では、すべてのアプリケーションに共通の SWFファイルのグループに対する検証を設定できます。

5 (オプション)その他の検証設定を設定しますDirLevelSWFScanMaxNumberofRequests および UserDefined メント内の必要なユーザー定義キー『設定および管理ガイド』の「XML リファレンス」を参照してください。

 

File プラグインの実装

Fileプラグインは外部の場所にあるディレクトリまたはファイルを開き、ディレクトリおよびファイルのリストをサーバーに渡すことができますFileプラグインにはSWFファイルからストリームファイルを識別する特定の属性が含まれていません。サーバーは、サーバー上に SWFファイルが格納されている場合と同様に検証を実行します。

サーバーに含まれている Fileプラグインのサンプルを参照してください。サンプルではコードの主要部分を示しています。

FileプラグインのサンプルファイルにはIFmsFileAdaptor::openを呼び出す関数が含まれていますopen()関数には、sFileNameパラメーターが含まれていますsFileNameの値はサーバーにより Fileプラグインに渡されます。これは Application.xmlまたは Server.xmlSWFFolderタグのデフォルト値です。

File プラグインはSWFFolder の値を外部コンテンツリポジトリにリダイレクトします。サンプルではそのリポジトリに対するハンドルを作成し、サーバーに渡していますgetAttributes() 関数はさらにパラメーターとして sFileName を取ります。

open() 関数を呼び出すとsFileName の値がファイルであるかディレクトリであるかを判定するコードがサンプルに含まれて、ファイルが開きます。ディレクトリが開き、一時ファイルに書き込まれます。サンプルでは、新しい属性 FMSFileAttribute::kMode を使用してsFileName がファイルであるかディレクトリであるかが判定されます(ストリームは 1、ディレクトリは 0

Fileプラグインは、この一時ファイルに対するハンドルをサーバーに返します。ディレクトリにサブディレクトリまたは SWFファイルが含まれている場合、サーバーはディレクトリまたはファイルを開き、すべてのサブディレクトリとファイルが読み取られるまでプロセスを続行します。サーバーはプラグインの read()メソッドを使用してファイルを読み取り、検証を実行します。サーバーはプラグインの close()メソッドを使用して、完全に読み取ったファイルを閉じます。

 

 

Fileプラグインを使用した HTTPライブストリーミングコンテンツの管理

Flash Media Server 4.5

 

File プラグインを使用し、非同期ファイル IO の操作を含む、HTTP ライブストリーミングコンテンツの管理を行います。Live Packagerアプリケーション(livepkgr)は、ライブストリームを取り込んでフラグメント(F4F ファイル)と追加ヘルパーファイルにパッケージ化します。これらのファイルを記録するサーバー操作は、File プラグインを介してルーティングされます。File プラグインを使用して、次のファイルの場所を管理します。

     .f4f

     .f4x

     .bootstrap

     .control

     .drmmeta

     .meta

Flash Media Server 4.5 は、次の API を追加します。

    rename()

ファイルを移動します。ソースファイルと宛先ファイルの絶対パスを渡します。この呼び出しにより、宛先パスの同じ名前のファイルが上書きされます。

サーバーはFileプラグインのこのメソッドを同期的または非同期的に呼び出しますサーバーがこのメソッドを非同期的に呼び出す場合はonRename()  が呼び出され、サーバーの操作が再開されます。

    truncate()

ファイルを指定されたファイルサイズに切り詰めますサーバーはFileプラグインのこのメソッドを同期的または非同期的に呼び出します。サーバーがこのメソッドを非同期的に呼び出す場合はonTruncate()が呼び出され、サーバーの操作が再開されます。

    onRename()

サーバーが File プラグインの rename() を非同期的に呼び出した後、サーバーの操作が再開されます。

    onTruncate()

サーバーが Fileプラグインの truncate()を非同期的に呼び出した後、サーバーの操作が再開されます。

API の詳細についてはFlash Media Server プラグイン API 参照」を参照してください。また、これらの API は、rootinstall/samples/plugins/file/SimpleFileAdaptor.h にインストールされたサンプル File プラグインで使用されます。

 

最終更新日 2013/9/30