2005年10月29日

24.000fps映像+48000hz音声

【概要】MEncoder,Raw-x264を24.000fpsで出力,48000Hz音声とmuxしたところ、A/V Syncが若干向上。
【タグ】[x264][aac][mp4][A/V Sync]
 ffmpegX同様に、MEncoderで 固定fps映像を出力。ffmpegで48000Hz音声を出力。mp4boxでmuxはfpsベース。とした場合、fpsをHzを割り切れる値にしてや ればA/V Syncが向上すんのではないか?とアタリをつけてやってみた。

って事で同一素材で実験。
Aは、MEncoder -ofps 24.000で出力、 mp4box -fps 24.000でmux したもの。
Bは、MEncoder -ofps 23.976で出力、 mp4box -fps 23.976でmux したもの。
- -ofps値 V A V-A(sec)
A 24.000 24:19.041 24:18.944 0.097
B 23.976 24:19.103 同上 0.159

一応、差は減った。というか0.0x台は個人的に初。
これでもズレてる理由を考えてみるに、大雑把に言って2つがあり得るだろう。
  • 第一に、MEncoderが出力フレーム数を勝手に調整している。例えばここでは-vfにpullupを使ったが、高度なフィル タの中にはVFRでフレームを吐くものがあり得る。AVIが相手ならMEncoderはそこから更にいろいろな調整をかけるようだが、raw x264出力は果たしてどうか。
    • 要、.264のフレーム数を知る方法。
  • 第二に、実は音声が厳密には48000hzではないのかも知れない。48000hzというのは音を1/48000秒単位で区切 るって事のハズだから、フレームに相当するものがあるはず。無音部分などを可変フレームレートにすれば高圧縮になる。
    • 要、aacのしくみの知識。
映像と音声を別個にエンコードする以上、この手のややこしさは避けられないと思われる。
素材から映像と音声を同時にエンコードする場合は、素材のヘッダも同期の参考にできるはずだ。
固定フレームレート+CBRのAVIが長く支持されるハズだよこりゃ^^;。


MEncoder -ofps 24.000、 mp4box -fps 24.000
$ mp4box -info /Volumes/XXX/1026/1021-Keroro-81.mpeg_24.mp4 
* Movie Info *
        Timescale 600 - Duration 00:24:19.041
        Fragmented File no - 2 track(s)
        File Brand isom - version 1

File has root IOD
Scene PL 0xff - Graphics PL 0xff - OD PL 0xff
Visual PL: AVC/H264 Profile (0x15)
Audio PL: AAC Profile @ Level 2 (0x29)
No streams included in root OD

Track # 1 Info - TrackID 1 - TimeScale 24000 - Duration 00:24:19.041
Media Info: Language "und" - Type "vide" - Sub Type "avc1" - 35017 samples
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 640 x 480
Self-synchronized

Track # 2 Info - TrackID 2 - TimeScale 48000 - Duration 00:24:18.944
Media Info: Language "und" - Type "soun" - Sub Type "mp4a" - 68388 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000
Synchronized on stream 1

MEncoder -ofps 23.976、 mp4box -fps 23.976。
$ mp4box -info /Volumes/Konrad/1026/1021-Keroro-81.mpeg.mp4 
* Movie Info *
        Timescale 600 - Duration 00:24:19.101
        Fragmented File no - 2 track(s)
        File Brand isom - version 1

File has root IOD
Scene PL 0xff - Graphics PL 0xff - OD PL 0xff
Visual PL: AVC/H264 Profile (0x15)
Audio PL: AAC Profile @ Level 2 (0x29)
No streams included in root OD

Track # 1 Info - TrackID 1 - TimeScale 23975 - Duration 00:24:19.103
Media Info: Language "und" - Type "vide" - Sub Type "avc1" - 34982 samples
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 640 x 480
Self-synchronized

Track # 2 Info - TrackID 2 - TimeScale 48000 - Duration 00:24:18.944
Media Info: Language "und" - Type "soun" - Sub Type "mp4a" - 68388 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000
Synchronized on stream 1

どちらも映像はSelf-synchronized。音声はSynchronized on stream 1。この関係を逆転とか試せないかな。

ここで考慮外の問題が2つ。
第一に、全長のズレは0.0x台に収まったが、いわゆるリップシンク。口と台詞の地味なズレは未検証。
第二に、アニメ/映画の24fps化やインタレ解除、逆テレシネフィルタの類いは、60000/1001フィールド/sec素材を、 30000/1001fpsや24000/1001fpsにキレイに加工するべく進化してきたわけで。その点では23.976ですら妥協である事。最善は 24000/1001。
posted by ばる at 19:14| Comment(0) | TrackBack(0) | 圧縮日記264 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

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

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

コメント: [必須入力]

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


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

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

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