動画配信システムをまじめに考えよう メモ書き

Windowsをエンコードサーバとして使う場合、ffmpegで無くても良いのでコマンドラインでも制御できるソフトを使ってみました。

まずFrapsでラスレムのベンチマークの動画を撮ってみました。
解像度は1280*720、ビットレートが1411kbps、約3分で546MBです。
確かに生データで運用するとすぐに破綻してしまいそうです。

次にMP4に変換してみました。正確にはコンテナをMP4にして動画はH264、音声はAACです。aviutlのpluginでx264出力をしてみました。画質はほぼ劣化無しで13MBになりました。
ス..ス...(゚Д゚(゚Д゚ノ(゚Д゚ノ)ノスゲー!!!

ただ高画質設定で出力したのでエンコードの時間が半端なかったです。3分の動画なのに(´・ω・`) 用途的に長い動画をアップする事もないだろうし、アップロードされる頻度も少ないと見込んで高画質で出力するようにします。
社内の開発機と同程度のスペックをVMWare上に作成してもう1回試してみます(さすがにノートでエンコードは時間かかる)

参考にしたサイトはこちらになります。
エンコード設定(中画質~高画質) - ニコニコ動画まとめwiki
aviutl_h264 - ニコニコ動画まとめwiki
拡張 x264 出力(GUI)の設定項目とその機能について - ニコニコ動画まとめwiki

次はフロントエンドの口を考えてみます。最初はSambaでコピーすれば良いと思っていましたが、フォルダを監視中にコピー中のものを拾ってしまうようなのでやっぱりWEBを口にした方が良さそうです(アップロード完了のタイミングが拾えるので)。不便になりますが触る場所が1カ所になるというメリットもあるという事で勘弁していただきます(´・ω・)

当初はJavaで作っていましたが(Windowsをフロントにする予定だったので、環境構築が楽)、フロントはUNIX系のOSになりそうなのでPHPを使ってみます。Flashプレイヤーから叩く口が3,4個とWEBページも3,4ページくらいなのでJavaは不要だと判断しました。(Javaは比較的開発初動速度が遅いので・・・)(←※VMの起動速度ではなく、開発の初動速度です)
プログラムも特に設計することなく、思いついたままに書いていきます。(設計はDBも含めて10分くらい)

PHPはJavaと違ってアップロードしているデータのStream処理が標準では行えないみたいです。これではアップロードの進捗バーが出せません。。。
・・・まぁいいか(´・ω・)r LAN内ならそこそこ速いしちょっと待てば良いだけだし。

うーん・・モヤモヤがとれないので、たぶん何か抜けがあると思います(´・ω・)

とりあえずエンコードサーバをFedora10 Quad9650 Mem8G上のVMwareにCoreを2個 Mem2GBを割り当てて構築中。
追記:VGAとかチップセットを認識してくれません・・・。ゥ─σ(・´ω・`*)─ン…

さらに追記:
仕方ないので別のPCでエンコードしてみました。やっぱりH264のエンコードは結構時間かかるかも。ちなみにMP4/H264は問題なくFlashプレイヤーで再生できました。また画質を落としてエンコードすればかなり高速にエンコードできます。

というわけで、速度を要求する人の欲求も満たすには、2種類出力すれば良いのでは。で低画質出力タスクをキューに入れるときは優先度を上げればシステムとしては良い感じ。ただ、ここまで作り込む段階ではないでしょうと思うのでこんな事は後回し。

あとは動画の情報とサムネイルを簡単に取得する方法を考えないと・・・。動画の情報はffmpeg使わないと無理かなぁ。。エクスプローラーに情報が表示されるから、そこから取得する方法もありそう。
もしくは、真空波動研のDLLを使えば確実かも。

サムネイル生成はこれかな
http://hp.vector.co.jp/authors/VA033749/soft/azmthumc.html

全部ffmpegで出来るみたい。
http://mitc.xrea.jp/diary/088

そうなるとffmpegでh264出力もやってしまったほうが良いことになるけど、ffmpegの方は調整が大変そうだしとりあえずここは後で考える!!

新しいサイトもよろしくお願いします!