Deap Peace

イラストやデザイン、買ってみてよかったものや日常のちょっとした出来事をダラダラ書いていきます。

DocomoのAndroidスマートフォン「Xperia」への動画エンコード【画質調整】

2010-05-20 16:25:39 | 【PDA】Docomo SO-01B Xperia
東京は今日もしっとりした雨の一日になりそうですね
みなさんのところはいかがでしょう?

こういう雨の日は気分もちょっと沈みがちですが、どうかみなさんお体にお気をつけてお仕事続けてくださいね♪♪


画質を調整してXperiaでもっとキレイな動画を再生したい!

…っていうコトで、前に紹介してたXperiaへの音ズレ解消エンコードの続きみたいな記事になりますorz

Aviutlのx264書き出しプラグインは本当に細かい設定までできるのでとても気に入ってますが、多分初めてこういうツールに触る方はあまりに難しい単語が沢山並んでるのでちょっと迷いますよね…

っていうコトで、今日は少しH.264の根本的な概念を説明して、そこからどういう所に注意して設定したらいいか…みたいなのをやってみたいと思います♪

あの…も…もしも間違ってるところとかがありましたらどんどん指摘してあげてくださいorz


動画の概念

まずは動画の基本的なところからですが、動画…っていうのは、パラパラマンガみたいに一枚一枚の画像を高速に流す事で、まるで物が動いているように見せる技術のコトを言っています。

そのため、1秒間にその画像を何枚流すか…というのが決められてて、アニメとかだと1秒間に24枚の画像を流すので「24fps(23.976fps)」という感じで表して、NTSC(一般的なTVとか)だと30fps(29.97fps)という単位で表しています。

一枚一枚の画像のコトをフレームと呼んでいて、もちろん動画を分解するとそれぞれのコマの画像を取り出すコトができるようになっています。


こんな感じでですね




…スミマセン…ちょっとヤッツケで作りましたので、もしもそんな感じに見えなかったら…私の画像作成が悪いのだと思ってくださいorz


この概念をそのまま使っているのが無圧縮AVIMotion JPEGです♪




無圧縮AVIは単純にBMP画像を連続させてるだけの動画形式、Motion JPEGはそのBMPをJPEGにしてあるだけの形式で、ものすごく古典的な動画形式だったりしています。

FFmpegで作り出したMotion JPEGは実は結構優秀だったりしてて、ネットブックとか、凄く非力なマシンでもHD再生を可能にしちゃうくらいCPUの負荷は低いのが特徴です♪
…実際にAtom N270(1.6GHz)でもビットレート落としてあげればFull HDは再生できますしね♪

無圧縮AVIはもっとCPU負荷が少ないのですが、HDDの転送速度が間に合わないとコマ落ちしますorz


H.264など、圧縮動画の概念

圧縮動画になると、今度は無圧縮AVIとかとは違って、同じフレームでも画像情報をきちんと持ってるフレームと、画像情報を持ってないフレームの2つに分けられます。

画像情報を持ってるフレームは、上の図のようにしてパラパラめくっていくことができるのですが、問題は画像情報を持っていないフレームですねorz

画像情報を持っていないフレームを、圧縮動画ではPフレーム、Bフレームと呼んでいます。
画像情報を持っているフレームはIフレームと呼んでいます。





実はH.264コーデックでも、画像情報を持っているIフレームだけで構成すると、全部のフレームが情報を持っていてそれが圧縮されている…つまり、Motion JPEGと殆ど同じ容量や画質になります。

H.264で容量が稼げるのは、このPフレームとBフレームという、それそのものには情報が無いけど、前後のフレームからまるでそこに画像を持ったフレームがあるかのように振舞うフレームがあるからこそ…っていうのがあります。

特に、ここのブログで紹介してるFFmpegの式はこの「直前、直後のフレームからしか中間フレームを生成できない」Pフレームを結構重視しています。

Pフレームというのはそこに画像情報は持っていません…けど、読み取るフレームは直前、直後しか無いので読み取り精度はかなり高く、またPフレームは殆ど容量を消費しないので動画容量の削減にも繋がる…って言うところでとても魅力的です。


このブログがBフレームをオススメしない理由

基本的にここのブログではBフレームをオススメしていません

Bフレームは、Pフレームと同じように前後のフレームから中間フレームを作り出すフレームのコトを言いますが、直前、直後からしかサンプルを取って来れないPフレームと違い、Bフレームは何フレームでも跨いだところからサンプルを取得できるという特徴があります。

一見便利なように見えるBフレームですがBフレームは結構そのサンプル取得に失敗する…っていうデメリットも大きなポイントだったりしますorz





…そして、Bフレームがサンプルの取得に失敗すると、こんなコトになりますorz





Bフレームの読み込み失敗がしたときのリスクを考えたら、あんまりオススメできませんorz


これらの概念があると読める頼もしいWiki

この辺の概念が頭に入っているとココのx264出力についてのwikiがとても役に立つと思います♪

さらに画質向上を狙いたい人には必見のWikiです
…実は私もそこで結構勉強させていただきました


その他、このブログでのオススメ設定はココ

一応、もしも今すぐちょっとでも画質を上げたいっていう場合には、こんな設定を弄ってみるといいかもしれません♪

Aviutlの設定などは前回のモノをそのまま流用してますorz





この振り幅をmin2からmax10とか、少ない数字で詰めれば詰めるほど画質重視、容量無視の設定になっていきます♪
でも、min1は完全画質重視で容量が一気に膨れ上がるのであんまりオススメできませんorz


関係がありそうな他の記事

Docomo SO-01B Xperiaに関するブログリンク
記事が膨れ上がりそうですのでこっちで一括ターミナルしてますorz