2005年11月09日

ウェアラブル奮闘日記--2005/11/08より

【概 要】人様のffmpeg設定を拝見する。
【リンク】MobileHackerz--ウェアラブル奮闘日記--2005/11/08

個人的にiPodもPSPも買うアテは無い し、ffmpegのビルドはコケるしで多少クサりつつもffmpegの設定例を拝見するべく日参していた、、、ら、、、。
閑話休題。
日曜に友人から「とりあえず余ってるから貸しとく!な!」と押し付けられた、Xcodeインストール済のPowerBook G4(;´Д`)
Macといえば…OS8が出るかどーか、Macで使うブラウザといえば当たり前のようにNetscape、なんて時代くらいまでし か知らない(触ってない)ワタシには いきなりOSX Tiger渡されてもわかんねーですよ(;´Д`)

Cocoaってなんじゃー!ObjectiveCわけわかんねー!と、今日はわりと早く帰宅したので格闘してました。
いやほんとわけわかんね(;´Д`)脳みそ老化始まってるおっさんにはキツイっすよ…

というわけで、とりあえず新規の知識は無くてもすぐできたffmpegのBuildだけ置いときます→ffmpeg-MobileHackerz-051107-MacOSX.zip
(このBuildのソースは基本的に変換君0.32と同じ、一部エラーが出る箇所だけ数行いじってます)
GUIはあまりにも作法が違うので理解するのにとーぶんかかると思います。というか、できるかどうかもワカンネ...(;´Д`)
このffmpegにどんなパラメータを渡せばiPod再生可能なH.264吐くかは、携帯動画変換君のdefault_settings\ Transcoding_iPod.iniを見てください。
(※現在のTranscoding_iPod.iniではffmpegでエンコードした後QuickTime(QT3GPPFlatten)でコンテナ再 構築をしていますが、再構築しなくてもそこそこ普通に再生できます)
ぬお!!とひっくり返りつつ起動。
MACHINENAME:~ USERNAME$ /Users/XXX/Desktop/ffmpeg 
dyld: Symbol not found: _faacDecDecode
  Referenced from: /Users/USERNAME/Desktop/ffmpeg
  Expected in: /usr/local/lib/libfaad.0.dylib

Trace/BPT trap
MACHINENAME:~ XXX$

ビルドをコカしてたんはキサマか!(ってconfigure.log読めよ<オレ。)
/usr/local/lib/libfaad.0.dylibを見る と、、、有るな。faadも起動する。
一応faad2 -- http://www.audiocoding.com/modules/mydownloads/ を拾って来たが、
$ sh bootstrap
$ ./configure
$ make
ここでコケた。む〜。いいかげんシステム入れ直したほうがいいよなぁ。

仕方が無いのでAVCTest-051103の設定だけ読む。

AVCTest-051103

Transcoding.iniをエディタで開けば設定が読める。
[Info]
Title=H.264 TEST
Description=H.264 testing
Winのスクリプト(でいいのかな?)は解らないが、<% %>で囲んだとこには他で設定した変数を代入するもののようだ。
以下、自分が見やすいように加工してある。

PSP

Title=PSP/AVC QVGA/29.97fps/384kbps

ffmpeg -y -i "<%InputFile%>" -title "<%Title%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec h264 -coder 1 -bufsize 128 -g 250 -s 320x240 -r 29.97 -b 384 -acodec aac -ac 2 -ar 48000 -ab 64 -f psp "<%OutputFile%>.MP4""
ffmpeg -y -i "<%InputFile%>" -f image2 -ss 5 -vframes 1 -s 160x120 -an "<%OutputFile%>.THM""
2行目で作る拡張子.THMはPSP専用のサムネイルだと思われ。

Title=PSP/AVC QVGA/29.97fps/VBR QB25

ffmpeg" -y -i "<%InputFile%>" -title "<%Title%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec h264 -coder 1 -bufsize 128 -g 250 -s 320x240 -r 29.97 -qscale 25 -maxrate 1500 -acodec aac -ac 2 -ar 48000 -ab 64 -f psp "<%OutputFile%>.MP4""
ffmpeg" -y -i "<%InputFile%>" -f image2 -ss 5 -vframes 1 -s 160x120 -an "<%OutputFile%>.THM""

Title=PSP/AVC QVGA/29.97fps/384kbps 2pass

ffmpeg -y -i "<%InputFile%>" -title "<%Title%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec h264 -coder 1 -bufsize 128 -g 250 -s 320x240 -r 29.97 -b 384 -passlogfile "<%OutputFile%>" -pass 1 -acodec aac -ac 2 -ar 48000 -ab 64 -f psp "<%OutputFile%>.MP4""
ffmpeg -y -i "<%InputFile%>" -title "<%Title%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec h264 -coder 1 -bufsize 128 -g 250 -s 320x240 -r 29.97 -b 384 -passlogfile "<%OutputFile%>" -pass 2 -acodec aac -ac 2 -ar 48000 -ab 64 -f psp "<%OutputFile%>.MP4""
rm "<%OutputFile%>"-0.log
ffmpeg -y -i "<%InputFile%>" -f image2 -ss 5 -vframes 1 -s 160x120 -an "<%OutputFile%>.THM""
ああ、2パスはこうやるのかぁ。

iPod

一応、ffmpegX0.0.9t 版に見当たらないオプションに色塗り。
;TitleMax=59 も一応できるけど要らないかな?
; よくわからないオプションの解説:
; -bitexact おまじない。H.264の場合たぶんあってもなくても変わらないです。
; -coder 0 Baselineプロファイルに切り替えてます。(-coder 0:cabac不使用 -coder 1:cabac使用)
; -bufsize 256 ビットレート調整を行う際のバッファのサイズです。小さすぎると指定した平均ビットレートに近づけられなくなることがあります
; -g 250 GOP長。長めのほうが評判いいみたいなのでサンプル設定に復活
; -vlevel 13 Baselineプロファイル中のサポートレベル
; -qmin 2 -qmax 51 標準的なMPEG4などの(ffmpegでの)qscaleと、x264のqscaleはスケーリングが違うみたいで、ffmpegが1〜31, x264が2〜51を採用してます。
; ffmpegのデフォルト値はqmin=1, qmax=31になっているので、これを指定しないと低ビットレート時に充分に画質を落とすことができません。
; -maxfr 30 最大フレームレートを指定します。ソースのフレームレートがこれ以下ならそのまま、以上ならこのフレームレートでエンコードします。
; 必ず入力ファイル指定の"前"に書きます。

Title=iPod/AVC QVGA/384kbps/128kbps

FileNameMax=59
ffmpeg -y -maxfr 30 -i "<%InputFile%>" -title "<%Title%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec h264 -coder 0 -bufsize 256 -g 250 -vlevel 13 -fixaspect -s 320x240 -b 384 -maxrate 768 -qmin 2 -qmax 51 -acodec aac -ac 2 -ar 48000 -ab 64 -f mp4 "<%OutputFile%>.M4V""
AddiTunes "<%OutputFile%>.M4V""
  • AddiTunesはiTunesに登録するスクリプトと思はれる。ってそのままか~~;。
  • -qmin 2は18 でも良いと思う。Xvidのqmin=2は概ねx264では18相当と書いてあるから。
  • ビットレートを384にした上で上限768を指定している。-maxrateかましても、ビットレート指定値次第では上限突破し ちゃうのだろう。
  • x264にCBRは存在しない。1パスでも「平均化区間」というものを使ってABRエンコードをする(らしい)。

    • ひょっとして、Apple-H.264が3パス以上やるのはこの平均化区間を変えてログ取ってる?。
    • つまり、可変平均化区間。平均化区間を、動きの少ないシーンで長く、多いシーンで短くとれば、ビットを有効に使えるハズ。
    • 例えば、平均化区間を変えて何度かログを取り、シーン毎のPSNRと付き合わせ、「賢い判断を下す」ルーチンを入れる。と か。
    • これならあの鈍足も納得できる。Bフレーム関係のパテントを安く済ませた上で、ちょっとスゲェ画質とサイズも可能だろう。
    • コデックのパテント抜きで戦うには妙案に思える。エンコ時間は 伸びるのでプロ/ハイアマチュア向けに高いマシンを売れる。消費者はiTMSでコンテンツ買ってください。広くQTP/iTMS/iPodをばらまいて、デファクトを取ってしまえばたかが動画コデックのパテントなぞ大した価値が無くなる。いや、妄想か。

Title=iPod/AVC QVGA/384kbps/128kbps 2pass

FileNameMax=59
ffmpeg -y -maxfr 30 -i "<%InputFile%>" -title "<%Title%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec h264 -coder 0 -bufsize 256 -g 250 -vlevel 13 -fixaspect -s 320x240 -b 384 -maxrate 768 -qmin 2 -qmax 51 -passlogfile "<%OutputFile%>" -pass 1 -acodec aac -ac 2 -ar 48000 -ab 64 -f mp4 "<%OutputFile%>.M4V""
ffmpeg -y -maxfr 30 -i "<%InputFile%>" -title "<%Title%>" -timestamp "<%TimeStamp%>" -bitexact -vcodec h264 -coder 0 -bufsize 256 -g 250 -vlevel 13 -fixaspect -s 320x240 -b 384 -maxrate 768 -qmin 2 -qmax 51 -passlogfile "<%OutputFile%>" -pass 2 -acodec aac -ac 2 -ar 48000 -ab 64 -f mp4 "<%OutputFile%>.M4V""
rm <%OutputFile%>-0.log""
AddiTunes "<%OutputFile%>.M4V""

----

たいへんありがたい事であるが、それ以上にウェアラブル奮闘日記は、読み物としてひどく面白い。
石に歯ぁ立てて遊んでる感じがここち良い。
posted by ばる at 21:12| Comment(5) | TrackBack(1) | その他 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
詳細のレポートをありがとうございます。
MobileHackerz--ウェアラブル奮闘日記--のffmpegのほう、何も考えずに起動して、
dyld: ffmpeg can't open library: /usr/local/lib/libmp3lame.0.dylib (No such file or directory, errno = 2)
Trace/BPT trap
と出て、そう簡単に使わせてもらえないなぁ…って思いました。
足りないものを用意してあげれば、使えるようになるのかな?>MobileHackerz--ウェアラブル奮闘日記--のffmpeg
Posted by ナル at 2005年11月09日 22:07
ふむふむ、なるほど。
私はlibfaad.0.dylib、
ナルさんはlibmp3lame.0.dylib
が、しかるべき位置にねぇから起動できねぇよ。
とおむずかりのご様子ですね。エラー番号が違うのがちと気になるけど。

ご承知かもしれませんが
拡張子.dylibはwinでいう.dllみたいなもんだと思います。たぶん。
QTコンポーネントみたく、必要に応じて読み込まれるんだと。



1)携帯動画変換君版:2.6MB
2)ffmpegX版:4.3MB

だから

1)はffmpegの中に「必要なライブラリはここにあるからね」とリンクだけ貼ってあんだとおもいます。
たぶん起動時にそのリンクチェックしてるんでしょう。
うちは
/usr/local/lib/libfaad.0.dylib
/usr/local/lib/libmp3lame.0.dylib
どっちも有る(以前にビルドしました)し、lameもfaadも起動するので、一応ffmpegを/usr/local/bin(ビルドすると普通ここに入る)に移してみましたが同じ結果でした。
ビルドする時には準備過程(./configure)でシステム内を走査しますから、.dylibの細かいバージョン違いとかもあるのでしょう。

2)は必要な.dylibを一緒に詰め込んであんだと思います。
これはstaticビルドってのをやれば作れるらしいです(自分はまだ出来た事ないです)。
で、他のマシンで動かすにはstaticビルドでなきゃいかんらしいです。

ビルドするソフトはGCCって言うんですけど(XCODE入れると勝手に入ります)、apple独自の拡張とかあるんで自分でビルドした方が速いかもしれません。
Posted by ばる at 2005年11月10日 00:45
もう一度MobileHackerz--ウェアラブル奮闘日記--へ行ったら、新しいffmpegが公開されていました。
いまターミナルでエラーが出ないで起動する事を確認しました。
ffmpegXに入れて使えるかなぁ...

ぱるさんにも、変換君の作者さんにも感謝です。(^^)/
Posted by ナル at 2005年11月10日 01:26
とりあえずこんなふうにやってみた。
$ ffmpeg -y -maxfr 30 -i /Users/naru/mpeg2file.mpg -title "ffmpeg_test" -timestamp "2005-11-10 01:00:00" -bitexact -vcodec h264 -coder 0 -bufsize 256 -g 250 -vlevel 13 -fixaspect -s 320x240 -b 384 -maxrate 768 -qmin 2 -qmax 51 -acodec aac -ac 2 -ar 48000 -ab 64 -f mp4 outputfile.m4v

ソースは102.1MBで2分22秒のMPEG-2のファイル。
出来たm4vファイルは8.6MBでした。
とりあえずQuickTimePlayerとiTunesでは再生できています。

上の書き込みの後、親父の車のバッテリーがあがって動かなくなり、車庫に入れるのに手伝わされて開始するのが遅くなってしまった・・・。(;_;)
Posted by ナル at 2005年11月10日 02:13
お知らせ感謝です。手許でも動作しました。

$ ffmpeg -y -i ${iFN} -title KERO_OP.mpeg.ffx264 -timestamp ${tIMEsTAMP} -bitexact -vcodec h264 -coder 1 -bufsize 128 -g 250 -s 320x240 -r 29.97 -qscale 25 -maxrate 1500
-acodec aac -ac 2 -ar 48000 -ab 64 ${iFN}.ffx264.MP4

もとはPSP設定です。
・QT7.0.3再生OK
・86.3MB to 13.6MB。
・映像と音声の再生時間が0.23秒違う(映像が長い)
・映像の最初が白くならない(MEncoderだとなる。1~3フレームくらいdelay-frameというものが入るらしい。尻が同じ数切れるらしい。)

自分の当面の課題は映像と音声の時間差を0.03秒台に持ってく事なので(実写で厳しい事があるらしい)、いろいろ試さないといけないようです。
>※現在のTranscoding_iPod.iniではffmpegでエンコードした後QuickTime(QT3GPPFlatten)でコンテナ再構築をしていますが、
これかな?わけわかんないけど。

ffmpegXは、あれGUIからこの設定生成してターミナルに渡してんですよ。だからGUIに無い設定効かないんです。
-coderとか-bufsizeとかたぶん死ぬので、設定を煮詰めて簡単なシェルスクリプト書くほうが速いかも。
たしかMPEGexporterTNGかAccelerCoderならテキストで書いた設定を保存できたかと。

ffmpegはパーフェクツに初めて使ったので、今後ともよろしくおねがいします。m(_ _)m
Posted by ばる at 2005年11月11日 00:15
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

携帯動画変換君の設定は最適か?
Excerpt: 現在のMPEG Exporter TNGが初期設定として持っている「iPod H.264 MobileHackerz」は本家の携帯動画変換君の持っているiPod用のH.264の設定のうち、もっともビッ..
Weblog: MacLab. News
Tracked: 2006-02-19 01:08
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。