【FFMpeg】H.264コーデックで高画質ストリーミング配信

ここの記事でH.264のコーデックをffmpegにインストール。

実際に変換してみた。

<元ファイル情報>
ファイルサイズ:75MB
コーデック:Motion JPEG
ファイル形式(コンテナ形式):MOV
動画情報:640x480 30.00fps

<H.264で変換したファイル>
ファイルサイズ:6MB
コーデック:H.264
ファイル形式(コンテナ形式):FLV
動画情報:640x480 30.00fps
サンプル動画

<旧CoTVで変換したファイル>
ファイルサイズ:32MB
コーデック:H.263
ファイル形式(コンテナ形式):FLV
動画情報:640x480 24.00fps
サンプル動画

H.264の圧縮率に驚き。変換コマンドは長いけどこんな感じ。

ffmpeg -y -i '/tmp/P1000722.MOV' -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -level 41 -crf 25 -bufsize 20000k -maxrate 25000k -g 250 -r 29.97 -s 640x480 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 '/tmp/output.flv'

意味不明なパラメータがいっぱい・・・。でも高画質。参考

これでCoTVの動画がより高画質で見られる(予定)。

ちなみにH.264の技術を利用すると映画もストリーミングで配信できるようになる。

これはH.264が超高圧縮率なので、高画質な動画をストリーミング配信したとしても途中で待たされることなくスムーズに見ることが可能なため。

Appleのサイトでサンプル動画が見れるので、実際どれくらいのクオリティかを確かめてみたい人はどうぞ。

QuickTime Guide

・・・この画質でこのファイルサイズはありえない・・・

<2009/06/06 追記>
x264のオプションに関する情報があったのでメモ。参考になったブログ

そのうちまとめようかな。

<2009/07/21 追記>
x264を最新にしてインストールしてみたら変換時にエラーで怒られた。指定するパラメータに変更があったみたい。

時間が出来たときにまた見直す予定

コメント

  1. れーちゃん2009年5月31日 22:13

    通りすがりの者です。
    H.264のお話ずいぶん参考になりました。有難うございました。

    -level 41 は -level 4.1 ?ですよね?

    しかし、この長いオプションは呪文のようですね(^^;

    返信削除
  2. コメントありがとうございます。
    levelの意味合いからすると確かに4.1ですが、

    http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels

    指定の仕方としては「-level 41」で問題ないかと

    http://d.hatena.ne.jp/amt/20070422/LevelOptions

    私が検証したわけではないので、確かなことはいえませんが。
    ・・・間違っているかも(汗

    返信削除
  3. れーちゃん2009年6月1日 12:52

    ごめんなさいです -level 41 (指定は int ですよね)で合ってましたm(_ _)m

    x264 のソースを見て確認したのですが、 (encode.c) の中で -level 1~5.1 は10倍で指定させて、その後10で割るような処理をしてるみたいです。

    cf) encode.c (800行目あたり)
    h->sps->i_level_idc/10
    h->sps->i_level_idc%10

    返信削除
  4. わざわざありがとうございます。
    しかしソースを追って該当箇所を見つけるとは・・・
    やりますな。

    返信削除

コメントを投稿

このブログの人気の投稿

【.NET】DataGridViewを選択した際に背景色を変更しない

Can't open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links

【PostgreSQL】ROWNUMのように行番号(現在行)を取得するROW_NUMBER