手元の動画をPSPに入れるための備忘録

携帯動画変換君での利用を前提にしていますが、コマンドラインで実行できる水準に落とし込もうと思います。・・・といっても結果的にやることは変わらないです。とりあえず、使いそうなところだけ〜。
と、色々と間違っているかも知れないです。もっとつっこんだ検証は後日。

引数と値 備考
-y 上書き許可。出力先に同じ名前のファイルがある場合、上書きします
-i "<%InputFile%>" 入力ファイル。変換前の動画です
-title "<%Title%>" タイトル。出力ファイルに含まれるタイトル
-timestamp "<%TimeStamp%>" タイムスタンプ
-bitexact 完全一致アルゴリズムを使用(コーデックのテストのため)テストエンコードするのかな?
-vcodec h264 映像コーデック。色々指定可
-bf 8 Bフレームを使用する(MPEG1/2/4でサポート)
-fixaspect 動画のアスペクト比を維持。出力ファイルのアスペクトとの差異はマージン入れて出力
-mbd 2 マクロブロックの選択。
0はFF_MB_DECISION_SIMPLE(単純処理)
1はFF_MB_DECISION_BITS(最低値)
2はFF_MB_DECISION_RD(可変)
-4mv マクロブロックの4モーションベクター(フレーム毎の各ピクセルの動き)を有効
-me full モーション予測メソッド。epzsで十分かも指定するとエンコードに時間が掛かります。
値は低い順にzero/phods/xl/epzs/full
-trell トレリス符号化変調アルゴリズム?を使います。詳細不明
-aic アドバンスド イントラ コーディング
-bufsize 128 バッファサイズ
-s 480x272 表示サイズ。
FW3.30以降だと720×480/352×480/480×272が指定可能に
ちなみにPSP画面の解像度は480×272
-r 29.97 フレームレート
-b 768 映像ビットレート
-passlogfile "<%OutputFile%>" ログ名
-pass 1 パス値を指定。Ffmpegが読み込んだ情報は1つ目のパスに、2つ目のパスで高い精度で作成されるっぽい。
値変えても大きな変化無さそう?
-acodec aac 音声コーデック
-ac 2 音声チャンネル。2はステレオ、1はモノラル
-ar 48000 音声サンプリングレート。数字が大きいと高音・低音が出やすい。低いとラジオっぽい音になる。
22500/44100/48000あたりを指定すれば無難?
-ab 64 音声ビットレート
-async 1 音声の同期方法を指定。音声をタイムスタンプと同期させるように調整する「1」を指定した場合は、開始ポイントが修整される
-f psp ファイルフォーマット
"<%OutputFile%>.MP4"" 出力ファイル名

携帯動画変換君エンコードするときはこんな値で良いかも。エンコード自体は正常終了しましたが、実際の再生については未確認。

Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -mbd 2 -4mv -me full -trell -aic -vcodec h264 -fixaspect -s 480x272 -r 29.97 -b 768 -acodec aac -ac 2 -ar 48000 -ab 64 -f psp "<%OutputFile%>.MP4""

詳細なドキュメントはffmpeg.mplayerhq.huに掲載されています。ここには引数の解説など。他にもよくある質問とか。対応コーデックはこっち
携帯動画変換君の実装と現行のffmpegでは若干差異がありますが、上記Webページの情報量もかなり多めなので最初から全部把握しようとするより、とりあえず必要なとこだけ調べる方針が良いかも。