FlashVideo+Dash Media Playerモジュール

現在の状況です。

記事の投稿でembedの生成(サムネイル添付)までうまく動作することを確認できました。しかし、playlistの生成で内部エラーが発生しうまく動作しません。
原因の箇所はdashplayerとgatewayのI/O部分と思われます。

Drupalのシステムログにservices/amfphpでMissing required arguments.が発生しています。
Serversモジュールのテスト画面でServices dashplayerのdashplayer.getViewでは問題なく結果が表示されるのですが、どうも実使用ではdashpalyerがamfphpにうまく引数を渡せていないようです。

Missing required arguments.はテスト画面で必須となっているパラメータ(たとえばview_name)を空欄にした場合と同じ結果です。

以下は、正常に動作確認が動画アップロード方法です。

ローカルへの動画のアップロード 動画用に追加した「video」content typeにCCK File Fieldを以下3つ作成しました。

アップロードする動画

field_upload_video
ファイル アップロードファイル
拡張子:mp4 mov m4v flv
 

変換後の動画

field_finished_video
ファイル アップロードファイル
拡張子:flv
 

変換後のサムネイル

field_thumbnail_video
ファイル アップロードファイル
拡張子:jpg
※フィールドの表示設定で、すべてのフィールドに対して除外にチェックし、記事内で非表示になるようにしてあります。

CCK File Fieldを使用しない場合は、コア(任意)のUploadモジュールを使用します。
モジュールを有効にしたあと、追加した「video」content typeの編集画面の一番したにある"ワークフローの設定"で"添付"を"有効"にチェックします。これでファイルのアップロードが可能になります。

CCK File Fieldモジュールを使用するかUploadモジュールを使用するかによって、FlashVideoモジュールの設定も変わります。

ここまでで、動画アップロード様のコンテンツテンプレートは作成できました。次に、embed用のコードを生成する設定です。これには、FlashVideoモジュールを使います。

FlashVideoモジュールの設定

まずUniversalSettingページの設定です。
アップロードにCCK File Fieldモジュールを使用している場合は、Preferencesで"Use the CCK FileField module for uploads. "にチェックをいれます。
これにより、"Content Type Settings"の設定項目が変化します。
その下のほうにある、ffmpeg pathもあわせて設定しておいてください。
バイナリーを導入したフルパス名で入力します。例 /home/hogehoge/bin/ffmpeg その下のflvtoolsは使用していません。

わすれずに設定の保存をします。

次にContent Type Settingsページの設定です。
まず、どのContent Typeに設定するかを一番下にあるContent Typeの一覧から選択します。

ここに表示されるのは、利用できるContent Typeのみです。ない場合はコンテンツタイプの追加画面で別途追加が必要です。
先に設定した「video」content typeはdisableになっていますので、"Edit settings for this content type."をクリックして設定します。

このページでembedに記述するプレイヤーファイル(.swf)、動画ファイル(.flv)、サムネイル(.jpg)を設定します。
一度手動でobjectタグをつかってembed方式で埋め込んだ経験のある人ならわかるとおもいますが、その他のcsidやらtypeやらの必要なパラメータは、固定になるのでFlashVideoモジュール内部で抽出されます。
あとは、ffmpegの変換オプションやプレイヤーの設定などもここで行います。

私はアップロードした動画ファイルを再変換させたくないので、ffmpegのオプションは"-vcodec copy -acodec copy -i @input @output"にしています。
@inputはアップロードしたファイル名に、@outputは変換後のファイル名に変換時に内部で置換されます。
出力ファイルは、変換後のファイルフォーマットを指定していないにもかかわらず.flvになります。強制的に内部でそうしているようです。
サムネイル画像の生成は、動画の何秒のところで生成するかまた画面サイズをいくつにするかなどの設定が可能です。
設定した値がffmpegのオプションに渡されるようになっています。

以上で、「video」content typeを使ってコンテンツの作成をすれば、アップロードしたファイルを自動的に記事にembedしてくれます。
もちろん動画に関する記事を書きたければ、本文に記載すればよいだけです。

dashplayerを使用するには、Drupal用のdashplayerモジュールとdashplayer本体が必要です。
dashplayerモジュールはdashplayer(dashPlayer.swf)のパスを設定するだけですみますが、playlist生成機能を使用するのであればServersモジュールやViewsモジュールが必要です。

dashplayerのskinなどプレイヤー自体の設定は、dashplayer本体のconfig/dashplayer.xmlに標準で使用する設定を記載して使用します。このconfigファイルは、config/hogehoge.xmlに変えて、embedコードからconfig=hogehogeと指定すれば使用できます。 これを使えばページごとにプレイヤーの設定を変えたりできそうです。
 
FlashVideoモジュール以下にあるファイルで、videoextやthumbnailext変数を変更すれば生成されるファイルの拡張子が変わります。
それにあわせて対応していればembedも生成されます。しかし、Dash Media Playerが.mp4に対応していないためか再生はできませんでした。
H264エンコードには対応しているが再生できるのはflvやmp3ということのようです。

長くJW FLV Media Playerを使用していたのでこのあたりがすこし不便に感じます。

 

今後の課題

FlashVideo

・FlashVideoモジュールでプレイヤー独自の設定をする方法(環境設定画面にある項目以外を設定する方法)
・画面サイズの設定(ffmpegの設定項目の画面サイズがembedに使われているためかプレイヤーのコントローラ部のサイズだけ縦横のサイズがかわり、横に黒い部分が表示されてしまう)
・CCK File Fieldを使用した場合に削除できないオリジナルファイルの削除可否と削除方法

Dash Media Player

・再生回数をプレイヤーに反映する方法
・Playlistの生成方法

Drupalバージョン

Drupal 6.x