youTubeを作るには?
流行るサービスが出ると、1エンジニアとしてどのようにそれを実現するか考えてしまうものです。テキストや画像がメインのサービスの場合だと、データベースとWebプログラミングに関する知識があれば大体の物は実現可能だと思いますが、動画関連のサービスだと、ちょっと専門知識が必要になってくると思います。
個人的にはyouTubeがどのような仕組みで動いているのかに関心があり、ちょっと調べてみました。意外と簡単に出来るようですね。
基本的な動作はデータベースの入出力と基本的なWebプログラミングに関する知識があれば出来ると思うのですが、パッと見で分からないところは
・Flashのメディアプレーヤー
・動画のエンコード
ですね。あのFlashのプレーヤーは最初見たときは衝撃でしたよね。
あとはFlashのプレーヤーで再生するには .flv と言う形式でないといけません。
それをサーバーサイドでコンバートしてやらなければなりません。
まずはあのメディアプレーヤーですが、すでにオープンソースで登場しているようです。
http://www.jeroenwijering.com/?item=Flash_Video_Player
ほとんど同じですね。さらにプレイリスト機能があるようで、そのプレイリストをRSS経由で取得できるようです。なにか面白いアイデアが浮かんできますね。
そして、サーバーサイドの動画のエンコーディングもオープンソースで実現できます。
http://ffmpeg.mplayerhq.hu/
ffmpegと言うコマンドラインベースのアプリケーションです。実際にサーバーにインストールしてみたのですが、subversionからの取得して、
./configure
./make
./make install
のいつものコマンドで簡単にインストールできました。OSはFedoraCore4です。
動画を.flvにコンバートするには
ffmpeg -i test.mpg test.flv
(test.mpgはコンバートするファイルでtest.flvは出来上がるファイル)
だけでOKで、コンバートは10MBのファイルで15秒位で終わります。
細かいパラメーターの指定はここでは省きます。
この二点さえ分かれば、普通のWebプログラマなら動画共有サイトの実現まで自力で辿り着けますね。すべてオープンソースで完結できるのも大きな魅力です。