Drupal6によるVideo Galleryの構築

今のサイトのGalleryには、女房の手芸作品の写真しか表示していません。旧サイトでは、女房の手芸作品の写真も熊五郎のトレーニング・ビデオも同じGalleryに表示していました。旧サイトのGallery方が、技術的には凝っていたので、それを紹介します。

◆使用したモジュール

 ・DrupalのPlugin

FlashVideo Videoの登録と再生等の機能を提供します。
Content Templates (Contemplate)
Content Construction Kit (CCK)の拡張モジュールで、コンテンツのティーザーや本文のテンプレートを変更できます。
Image Drupalで静止画を取り扱う基本的なモジュールで す。その一部であるImage Galleryが提供するViewのSettingを変更し、Videoを表示します。
Taxonomy Menu Image やVideoに付けたTagをメニュー化します。
Views
DrupalのContentsを表示する様々なViewが作成できます。Image GalleryのViewのSettingを変更したり、新着画像のViewを作成します。
inline Video Galleryには直接関係しませんが、ブログに画像を一枚だけ挿入するのに便利です。teaserとbodyで自動的に画像の大きさが変わります。
image assist Video Galleryには直接関係しませんが、ブログの任意の位置に任意の大きさで、画像を挿入することが出来ます。但し、貼り付けた画像がそのままteaserにも表示されます。

・その他のフリーソフト

FFMPEG FlashVideoが様々な形式のVideoを登録する際、FFMPEGを使用し、FLV形式に変換します。
Flash Player FlashVideoが、FLV形式のVideoを再生する際に使用します。

◆FlashVideoのインストール

FlashVideoのH/Pにtutorialがあり、基本的にはそれに従いますが、親切とは言い難いtutorialです。

・FFMPEG

tutorialには、CirtexHostingと契約すればFFMPEGはすぐに使えると書いてあるだけで、FFMPEGのインストールに関しては一切言及していません。Red Hat系の場合、FFMPEGはRPMforgeから入手できます。

Ubuntuの場合は、標準リポジトリに入っているので、apt-getでインストールできます。ただし、標準のコーデック・ライブラリ(libavcodec52)では、MP3をエンコードできないので、libavcodec-extra-52をインストールし、libmp3lameでエンコードする必要があります。

・Flash Player

Flash Playerとしては、Dash Media PlayerとJW Playerが選択できます。FlashVideoとの相性はDash Playerの方が良いようです。しかし、Plyaerとしては、JW Playerの方がポピュラーだと思われるので、私は、JW Playerを選択しました。JW Playerは、http://www.longtailvideo.com/からダウンロードし、player.swfを、sites/default/files/にコピーします。

・VideoをAttachするContent typeの登録

Image moduleをインストールするとImageというContent typeが自動的に登録されます。そのビデオ版に相当するVideoというContent typeを、Content Templatesを使って登録します。

Content management > Content types > Add content typeを開きます。Name:Video、Type:videoを入力します。Workflow settingsのDefault optionsのPublishedは無効にします。一旦Saveします。VideoをEditし、Template tabを開きます。Teaserを開き、“Affect teaser output” を選択すると、“Teaser Template”が入力可能になるので、thumbnail tagを追加します。

<?php print $teaser ?>
[thumbnail]

同様に、Bodyを開き、“Affect body output” を選択すると、“Body Template”が入力可能になるので、video tagを追加します。

<?php print $body ?>
[
video]

・FlashVideoの設定

Site configuration > FlashVideo を開くと、最初にphpのパラメータの推奨値と設定値が並んでいます。設定値が推奨値を下回っていたら、php.iniあるいは.htaccessを修正し、apacheをreloadしてください。

VideoのsettingsをEditします。“Enable the FlashVideo for all nodes of this type: video”と“Require the FlashVideo for this node type.”と“Convert videos immediately.”は有効に、“Disable the [video] tag.”と“Change Node Status after Conversion.”は無効にします。ビデオのFLV形式への変換は、一般には、upload時には行わず、cronで行っているようです。しかし、私は、upload時に結果を確かめたいので、直ぐに変換するように設定しています。直ぐにといっても、Attachでは変換されず、一旦Saveしないと変換されません。したがって、Saveと同時にPublishされないよう“Published”は無効にしています。

Flash Player Settingsを開きます。Flash Player Nameを、player.swf(sites/default/files/にコピーしたFlash Playerの名前)に変更してください。Dash Media Playerの場合は、変更の必要がありません。私は、“Default AutoStart”をfalseに変更し、Video contentを開いても、自動的にビデオが始まらないようにしています。

FFMPEG settingsを開きます。ffmpeg Command:では、ffmpegでuploadしたvideo fileをflvに変化する際に使用するオペランドを指定します。defaultでは画像が荒すぎるので、私は“-b 1000k”オプションを追加しました。また、Ubuntuの場合、本来ならば -acodecをlibmp3lameに変更しなければならないはずですが、FlashVideoが、libmp3lameが有効な時は、mp3をlibmp3lameに書き換えるので、その必要はありません。

-i @input -f flv -acodec mp3 -ar 22050 -ab 64k -ac 1 -b 1000k @output

ffmpeg Thumbnail Command:では、ffmpegでThumbnailを作成する際のオペランドを指定しますが、変更の必要はありません。Video Default Sizeは、カメラに合わせて“640x480”にしました。

これで、Videoがuploadできるはずです。Create content > Videoで確かめて下さい。

◆Video Galleryの作成

・Munu

Taxonomy Menuを組み込むmunuを作成します。Navigation等既存のmunuに組み込む場合は、必要ありません。 Site building › Menus > Add menuを開き、Menu nameとTitleを入力し、saveすれば完了です。

・Image Galleriesの設定

Content management > Taxonomyを開き、Image Galleriesをeditし、Content typesにVideoを追加します。

Settingsで、contentをCreateするときの、Tag itemの入力方法を設定します。Tagsを有効にすると、Tag itemを自由に文字列で入力できます。Tagsを無効にすると、登録済みのitemから、Tagを選択するように変わります。Multiple selectを有効にすると、一つのcontentに複数のTagが付けられます。Requiredを有効にすると、Tagを付けないと、contentを登録できなくなります。

Taxonomy menuのMenu locationでTaxonomy menuを組み込むmenuを選択します。

Optionsで、Taxonomy menuの表示方法を設定します。Synchronise changes to this vocabularyを有効にすると、Tag itemを編集すれば、それに同期してTaxonomy menuも変わります。Hide empty termsを有効にすると、contentを含まないTag itemはmenuに表示されません。Add item for vocabularyを有効にすると、vocabularyの名前(この場合はVideo Gallery)が、Taxonomy menuの先頭に表示されます。Auto expand menu itemsを無効にすると、Taxonomy menuはクリックされるまで展開されません。

add termsで、Tag itemを入力します。その際、Advanced optionsのParentsを指定すれば、階層メニューが作れます。

・Views

image_galleryのviewを、Videoも合わせて表示できるようにするとともに、私の好みに合わせて変更しました。Site building > Viewsを開き、image_galleryをEditします。

FiltersでこのViewに表示するcontentを選択します。初期状態では、Node: Type=Imageとなっているので、これをクリックし、Videoを追加します。

Sort criteriaでこのView内の、contentの表示順を指定します。“+”をクリックすれば、新しい条件文を入力できます。既存の条件文を選択し、“Remove”をクリックすれば、条件文が削除できます。

Basic settingsでcontentの見せ方を設定できます。私は、Style: Grid, Number of columns: 4, Alignment:Horizontal 、Row style: Node, Build mode: Teaserに設定し、contentのTeaserが水平方向に4つ並ぶように設定しました。contentのTeaserを表示すれば、Videoの場合はVideoのthumbnailが、Imageの場合はImageのthumbnailが、自動的に表示されるので、content typeの違いを吸収できます。ただし、本文に長い文章を入れると、Teaserが長くなり過ぎ見づらくなるので、本文に<!--break-->を入れてTeaser を短くする必要があります。

・Blocks

Site building > Blocksで、作成したMenuを、sidebar first Regionに表示します。

◆新着画像を紹介するBlockの作成

ImageとVideoをTagで分類せず、新しい順番に表示するBlockを作成しました。

Site building > Viewsを開き、image_galleryをCloneします。View name: image_recentを入力し、Nextをクリックします。TitleをRecent Imagesに変更します。ArgumentsのTaxonomy: Term Idを削除します。Style: GridのNumber of columnsと、Items per pageを5に変更します。

Site building > Blocksで、image_recent: Blockをconfigureします。Block titleを新着画像に変更します。Page specific visibility settingsでShow on only the listed pages.を選択し、Pages: を下記のように設定します。

<front>
Node/*

最新画像のBlockは、front pageとcontentを表示するときのみ、表示されます。一覧等が表示されるときは、表示されません。

Saveし、content top Regionに表示します。ただし、私の使用しているAcquia MarinaというThemeには、content top Regionがありますが、一般のThemeにはないので、表示位置は工夫してください。