February 09, 2008
動画をやってきた奴は、ドワンゴだけじゃないぞ!という本(違うか)
著者陣のお友達から献本いただきました。FFmpegと聞くだけで気になる人って結構多いんじゃないでしょうか?
毎日コミュニケーションズ (2008/01/29)
売り上げランキング: 3020
FFmpegってのは、動画共有サイトのコアで使われている動画変換のプログラムです。
この本で得られる内容をざっくり紹介すると、
・動画ファイルと、codecの関係という非常にわかりにくいところが整理できる。
・FFmpegがインストールできるようになる。
・FFmpegをサーバサイド言語からどうやって使ったら良いのか?がわかる。
動画のエンコードとサムネイルの取得周りのサンプルが提供されている。
対応言語は、Perl , PHP , Python , Java1.5 , Java1.4
・実在する字幕入り動画共有サイトの動作サンプルを得ることができる。
・動画を再生するFlashによるPlayerのサンプルコードを得ることができる。
僕にとっての本書のメリット、それは、LinuxでFFmpegのインストールができるようになったことだ。
なんじゃそりゃって話かもしれないが、DVDをリッピングしてDivXなどに変換する作業をしたことがあるならわかると思うが、動画周りは情報をまとめるのが非常に面倒くさい。
まず「mpeg4やFlash Video」と、映像を処理する「映像codec」と、「音声codec」が違うというところから理解が必要だ。それぞれにインストールするプログラムがあるからね。
これWindowsアプリなら、よくわからなくても誰かのサイトや2ちゃんねるに書いてあるURLを片っ端からインストールしておけば、なんとなくできてるものだが、Linuxでインストールする場合は、インストールオプションでちゃんとした名前を打ったり、ちゃんと動くソースコードをダウンロードしてこなくてはいけないので、Windowsよりも理解しておかなきゃいけない情報量は多い。
「そこにさらっと書いてあるconfigureの設定」を適切に抽出するのが面倒くさくて、何度かFFmpegをインストールしようと思ったもののやめてしまっていた。頑張らなくても、携帯動画変換君があるしね。
本書はそういう情報がまとめられているので、さくっとインストールできた。ありがたや。
ただし、注意しなくてはいけないのがLinuxの場合は、ただ文字列を打てばインストールできるわけではない。
本書ではFedoraに対して、codecが配布されているサイトのリポジトリを登録し、yumコマンドを使ってインストールする方法で紹介されているが、僕のFedoraCore5では、yumがインストールしようとするrpmの都合で、glibcのバージョンが低いからと跳ねられた。
古くなったLinuxと、配布されているrpmの依存関係の不整合としてよくある話だ。Windowsではあまり経験しないことである。
なので本書に書いてある「そこにさらっと書いてあるconfigureの設定」からWebサイトを検索し、codecのソースコードをダウンロードして、直接、./configure、make、make installなどの手順でインストールした。rpmを動かすためだけに必要な余計な依存関係を解決するより、こっちの方が簡単だ。
つまり、そういった情報の変換の知識は必要だ。このあたり、Linuxを使うに必要な考え方で、Linuxの使い手は当たり前のようにやっていて、そのコストについて誰も語ることはないので、あえて書いてみた。
PerlやPHPによる動画変換サンプルは、いたって簡単な話。サーバサイドで使う言語からffmpegをキックしましょうというサンプルだ。
各言語取りそろえると、Hello Worldに近いものがあって比較しても面白い。実際に使った経験上、タイムアウト処理が加わっているあたりがポイントか。
また、mizzyさん製のcpanモジュールであるFFmpeg::commandも紹介されている。
僕が公開している「動画変換スクリプト」でも、携帯動画変換君に内蔵されたFFmpegをキックしています。
誰もいらないかもしれませんが、本書の多様な言語によるサンプルに加えてWSH+VBScriptによるffmpegをコントロールする実装は、動画変換スクリプトのソースを見ていただければと思います。最近、amachangブランドでにわかに注目されてるxpathをバリバリ使ってRSSも作ってたりします。
XP以降のWindowsなら携帯動画変換君だけあれば、誰のマシンでもすぐ動くからという理由で、せっせとVBScriptで書きました。Vistaは知りませんが、ユーザーなんとか制御の権限周りをクリアすれば動くと思いますし、イマドキ、新規開発で使ってる人がいるかわからんですが、ActiveServerPagesでffmpegを動かしてRSSを吐き出すサンプルでもあります。
本書後半の動画共有サイトのサンプルがPythonで書かれてるってのが熱いです。言語も多様な時代だなとは思っていますが、そういう時代なんですかねぇ。
ここでサンプルに挙げられている字幕入り動画共有サイトは、著者の原さんや、多分他の方々がニコニコ動画が出てくる前から公開していた実際の動画字幕サービスの経験を本書に投入していると思われる。
きっと、そのサービスで実際に使った言語がPythonだったってことなんだろう。
同時に、Flashによる動画再生プレーヤーのサンプルコードが配布されていて、これが一番のメリットだって人も多いんじゃないだろうか。
ソースコードは、本書のサポートサイトからダウンロードすることができるが、例えば、データはYoutubeに置いて、自分ところだけの動画プレーヤーを作りたいというニーズは結構多いんじゃないかな。そんなところにも応用できるんじゃないでしょうか。
ソース見てないで書いてますが、ActionScript2.0バリバリのFlashに添付されてるPlayerを改造するよりは簡単だと思います。昔、案件でFlash MX2004についてたflv playback(?)を改造した時には挙動を理解するのに、結構苦労しました。
さて、もし本書を見て個人が動画サービスを作るとなると、帯域の問題と、エンコード処理のコストが問題になる。ffmpegがインストールされてるレンタルサーバってないもんね。
この問題を解決するとすれば、時間の短い携帯動画の一発芸みたいなところが良いかも知れない。
本書に書かれていることは決して難しい技術ではない。難しいところはFFmpegが全部吸収してくれていて、あとはそれをどう動かすか?という話に尽きるからだ。
本業プログラマであれば、サンプルソースコードの部分は、そんなに必要とすることはないだろうし、Web屋ならサイトサンプルもファイルとして動画は扱ってるけど、ものすごい連携をしてるってわけじゃないから、まぁそういうものだよね、という感じだ。
こういうのはアイディアと企画、運用が重要で、Webアプリの実装そのものはアイディアをカタチに落とすところが大変なのであって、アウトプットを後から見て、開発中に起きたトラブルへの対処が凄かったとか、そういうのはあまり見えてこないものだ。トリッキーな技術でも使ってれば、そこでご飯三杯食べられるネタになるわけだが、そういうのは以外と実用性は低い。
最近、はてなに高専生が訪れたという話があったが、本書に一番向いているのは、これから面白いサイトを作ろうとしてるけど、経験がまだ少ない人ということだろう。
新しいアイディアを実現するために、動画を変換する基本的なところと、動画を再生するプレーヤーと、既存の動画共有サイトのアイディアと構成を流用し近道できる一冊として貴重な本だと思う。
なによりFFmpegをキーに一冊の本にまとめあげたのは面白いアイディアだと思う。
追記:ジェットダイスケさんのレビューを見つけました。PeeVeeのプレーヤーって本書のメイン著者の原さん製だったのね。
動画共有サイトを作るための解説書「FFmpegで作る動画共有サイト」
毎日コミュニケーションズ (2008/01/29)
売り上げランキング: 3020