index

2006年 12月
          1 2 3
  4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
  25 26 27 28 29 30 31
2007年 1月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
2007年 2月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        

アレ

H.264 の avi を mp4 に(on FreeBSD server   ▽20070103b #コンピュータ #動画圧縮

さて avi の問題点も把握したところで, やっと mkvtoolnix に 「allow_avc_in_vfw_mode」なんてモードがある理由も把握できたような気がする昨今. 「1フレームに 2個押し込めつつヌルのフレームを挿入」とか 「必ず 1フレームずつずれる」とか, ちょっと齧っただけでもとてつもなく美しくない策を弄するしかないあたり, きっと avi フォーマットってのは世界の各地でこよなく憎まれていることであろう.

ただ上記の mkvtoolnix の出力によると, 「VFW モードの AVC を Matroska コンテナに押し込めるのは未定義. いったん MP4Box で洗ってから native モードで入れなおしな」と出るので, まぁこちらとしては初めから mp4 にしようとしてるわけだが, するってーと MP4Box ってのは「きれいな」H.264 ファイルにして格納してくれるのかしらね?

早速 MP4Box を使ってみるわけだが, まぁ Windows 上だと GUI とかもちろん存在するわけで, YAMB という MP4Box のフロントエンドがしっかりあるわけですな.

ちなみに以下のような手順になる.

  1. PV3 で録画.→ .dv (EARTH DV 形式)
  2. TMPGEnc4XP で CM カット& x264 出力 → .avi (H.264/VFW + MP3)
  3. MP4Box で raw video と raw audio を extract → .h264 + .mp3
  4. MP3 を AAC に変換 → .aac
  5. MP4Box で .h264 + .aac を .mp4 にエンコード → .mp4

うわぁ面倒くさいw

こういう面倒なのはバッチファイルにしてコマンドラインでやってしまうに限るわけだが, うちの環境の場合これらを行なう場所がネットワークドライブ上なので, 数 GB のファイルをいちいちネットワーク横断させないといけなくて, 大変に遅くなってしまう. そこで,どうせならこれらの作業すべてファイルサーバ上でやってしまおう,と.

用意するものは以下の通り.

  • MP4Box ( ports: multimedia/gpac-libgpac )
  • FAAC ( ports: audio/faac )
  • mpg123 ( ports: audio/mpg123 )

作業はこんな手順で.


 MP4Box -aviraw audio infile.avi
 MP4Box -aviraw video infile.avi
 mpg123 -w infile_audio.wav infile_audio.mp3
 faac -q 100 -b 160 -c 48000 --mpeg-vers 4 --obj-type Main infile_audio.wav
 MP4Box -fps 29.97 -add infile_video.h264 -add infile_audio.aac infile.mp4

うーん……TMPGEnc4XP の avi 出力の時点で AAC にエンコードできれば手順がひとつなくせるのだけどなぁ. あと MP4Box の入力ファイル名に日本語(UTF8)が使えないぞ.どーなってんだ.

とまぁ,ここまでやって, なんか途中の MP4Box -aviraw video で抽出する H.264 データのファイルサイズがおかしいことに気づいた. 元の AVI ファイルを作る際のパラメタが悪くて変なデータになって途中で切れているのでは, とか予想して,パラメタ変更してエンコ仕込んで寝よう.

動画ファイルいじってたらまる 1日潰してしまったが, いろいろと知識が増えたからまぁよしとしよう……

index