YouTubeに高画質でムービーをアップする(1)

ここ数日、YouTubeに画像をアップするという遊びを楽しんでいるのですが、なかなか思った通りのクオリティでアップできなくて。ネットにある先人のチャレンジの記録を参考に、最適な設定値を見つけようとひたすらbluth force attackであれこれ試してみてました。設定を変えていちいち.movもしくは.mpgにエンコード、なので、えっらい時間がかかった遊びだったけどね(まだ続行中ですけど)。

おかげでPowerBook G4のメモリ、買っちゃいました(^_^;) 夜中にポチッと。翌日の朝には、我が環境は256MB×2から一気に1G×2へ! もう起動とかウインドウの開け閉めまでもが、速っ! 

そして、延々とマシンを稼働させているのでマシン温暖化も心配になり、放熱するためのアルミの台も買ってしまいました。30K+円投資の遊びとなってしまいました…。

先人たちの記録:
http://saqoosha.net/2007/01/30/423/
http://nicowiki.com/encode.html?#jcda9ad2
http://youcharmanums.blog2.fc2.com/blog-entry-584.html


YouTubeのHelpのアップロードのガイドを見ると、動画のフォーマットは.wmv、.avi、.mov、そして.mpegに対応しているとのこと。
http://www.google.com/support/youtube/bin/answer.py?answer=55744&topic=10526
このうち「QuickTime .mov files can be uploaded to YouTube without any additional conversion.」なんだって。
http://www.google.com/support/youtube/bin/answer.py?answer=57410&ctx=sibling
ムービーは、10分以内の長さであるか、100MB以下の大きさでなければならない。

そして、私の知りたいことそのものズバリなFAQもあった。

「What's the best format to upload for high quality?」

We recommend the following settings:

  • MPEG4 (Divx, Xvid) format
  • 320x240 resolution
  • MP3 audio
  • 30 frames per second

(http://www.google.com/support/youtube/bin/answer.py?answer=55745&topic=10526)

んー、でも、YouTubeで上映される画像のフレームサイズを、画面キャプチャ取って見てみたら、430x338なんですけど。320x240じゃあ画像が引き延ばされてドットが荒れてしまうんじゃないの? 

でも430x338でエンコードしたとしても、だ、ビットレートは決まっているので、上映時にやっぱり画がガキガキになってしまうのかなあ。100MBの画像サイズの制限もあるな…あ、でも、音質をめちゃくちゃ挙げない限りは、そんなにデカいファイルになるってことはなさそうだ。

と、考えていてもしょーがないので、とりあえず、いろいろなクオリティのものを作ってアップしてみたら、なんかみんな同じクオリティでアップされているみたいだということに気が付きました。それでgoogleってみたら、どうも、任意の値以上のクオリティのものはYouTube側でトランスコードされてしまい、「320×240px、300Kbps」ぐらいにされてしまうらしい。かつ、YouTube はサーバー側でコネクション毎に帯域制限かけていて、トータルビットレート480Kbpsまでぐらいしかでないように調整されているんだそうだ。

なので、こちらで、トランスコードされて勝手に減らされてしまうよりは理想的にいろいろ減らしたものを作り、それをトランスコードされないまま流せるようにする、という作戦にするのがよいらしい、ということがわかりました。

では、その理想値は何なのか。maxからちょっとずつ画像のクオリティを落としていって調べてみたところ、400kbpsから300kbpsかなー、というところまでアタリがついてきて。平行してgoogleってみると、これも実験した人がいて、340kbps以下、というアタリを出していた。すなわち、

file-size(kbyte)*8(bit)/play-time(sec.) <= 340(kbps)

という条件を満たすFLV形式のファイルはYouTube側での再エンコードを受けない。

のだそうだ。

先人の実験は音ナシで行われていたのだが、私は音が入っているのをアップしたかったので、音のビットレートをどうやってトータルに乗せればいいのか悩んだ。が、とりあえずエンコしてみて、出来上がったファイルをこの計算式に当てはめて、<=340kbpsだったらクリア、だめだったらやり直し、して、ファイルを作成するしかないなという方法に落ち着く。結局はbluth force attack(^_^;) 音は、高品質にしたらキリがないので、mp3かAAC-LCで、ステレオ・96kbps・44.100kHz以上の設定にはしないことにした。

もうひとつ重要なのは、画像ファイルのフォーマット。.mp4の方が.movよりも軽いけど、同じ.movでも.mov内でフォーマットをmpeg4に指定したときとH.256に指定したときとこれまた「画像の悪くなり方」が違うんだよなあ。.mp4の方が、もわっとにじにじ悪くなるような気がする。.movは、ぎざぎざがきがき悪くなるような気がする。

ファイルサイズを軽くするのなら、手元でflvにまでしてアップするのがいいみたい。

結局、60本近くエンコードしローカルでチェックして、30本近くageたりsageたりしてみましたが、コレだ!という値は見つからず。もうちょっと情報を集めて、また実験してみるつもりです。

ちなみに、私の環境は、iMovieHDとFlash Video Encoder、YouTubeにアップするとこまで全部Macで行っています。

(続く)