2005年12月18日

NHK_その時歴史が動いた-真珠湾への道[後]山本五十六

【概要】実写番組におけるリップシンク。
【タグ】[MEncoder][ffmpeg][mp4box][muxmovie][QuickTime Player Pro 7.0.3][x264+aac.mp4]


1. 素材概要

  1. NHK_その時歴史が動いた-真珠湾への道[後]山本五十六
  2. MPEG2-PS, 42分28.97秒, 2.53GB
  3. エンコード設定概要
    1. MEncoder:-nosound, -ovc x264 -ofps 30.000 -of rawvideo -o Sonotoki-1216.264
    2. ffmpeg:-i Sonotoki-1216.264 -i Sonotoki-1216.mpeg -map 1.1:0.0 Sonotoki-1216.aac.mp4
    3. mp4box:-fps 30.000 -add Sonotoki-1216.264 -add Sonotoki-1216.aac.mp4

2. リップシンクのズレ

上記で得られた「Sonotoki-1216.mp4」でリップシンクのズレが体感できた。28分目頃に登場する歯切れ良く喋るご老人のインタビューで 「ん?」と思った。此方。
mr_maeda01.jpg mr_maeda02.jpg
製作・著作:NHK大阪 「山本長官の命令であるけども(ここで溜め)はちじよりも、 午前八時よりも前に...」
「はちじ」で力を入れ、言葉を振り出すように首を前に振る。スタッカート気味の
発 声
元の.mpegと比較して確信した。つまり比較しなければ確信が持てない程度のズレ。音が遅れているのか先走っているのかは自分の視聴覚では判断が付 かなかった。その後、ズレは徐々に拡大していくようで、37分頃には、松平アナの動きの少ない唇でもはっきり体感できた。音が先走っている。ズレ幅は 0.5秒より ず〜っと下だと思う。

人間の視聴覚は10ミリセカンド程度の精度はあるのだろう(※)。
この手の番組で気にするかどうかは人それぞれだと思う。実際、自分は気にしない。しかし、ミュージカル映画や音楽ビデオではおそらく致命的だ。アニメでは 2時間の映画でもまず気にならないと思うが、DisneyのFantasiaなぞ放送された日にゃ(まぁ、無いだろうが)残念感が漂うはず。

(※)根拠は、自分の腕時計のストップウォッチが0.01secまで出るというだけ。もし、 この時計が「認知・判断・行動」まで考慮して設計されているなら、つまり視覚情報を脳が判断して、指を動かしてボタンを押すまでにかかる時間を考慮に入れ ているなら、人間の認知精度(視覚の)はもう少し高い。たぶん。

3. 対策

Bフレームを使っているので、QuickTime Player Pro7.0.3で加工するには、まず"Delay frame"の除去が必須。
mp4box,ffmpeg,などのコマンドラインツールでできた方が、シェルスクリプトで自動化できるという意味で楽だが、未成功。
現時点では"Delay frame"の除去には、QTCoffeeのmuxmovieを使っている。コマンドラインから使うQuickTimeツールだ。詳細はこちら
$ muxmovie -startAt 00:00:00.034 Sonotoki-1216.mp4 -o Sonotoki-1216.mov
A non-self-contained movie is being created. Do not delete your original movie.
  • -startAt 00:00:00.034:これは30fpsだから。1フレーム≒0.03333333秒
  • -self-contained:これを使うと独立再生式.movで書き出す。やや時間を喰うので上記では使わず、参照形式movに している。
  • -mp4:これを使うと.mp4書き出しを試みるが、未成功。
  1. でき上がった参照形式mov " Sonotoki.mov " をQuickTime Player Pro 7.0.3 で開き、林檎+jから映像のみ抽出。
  2. 元の.mp4 " Sonotoki.mp4 "をQuickTime Player Pro 7.0.3 で開き、林檎+jから音声のみ抽出。
  3. 抽出音声を全て選択してコピー、抽出映像へ、「選択範囲に調整して追加」
  4. QuickTime Player Pro 7.0.3で.mp4へ書き出し。映像・音声は「そのまま」。
これでリップシンクの問題を「自分には知覚できない」.mp4ができた。

051218-qt.gif

$ mp4box -info Sonotoki-DFcut0.034-Ascaled.mp4 
* Movie Info *
Timescale 600 - Duration 00:42:29.133
Fragmented File no - 2 track(s)
File Brand mp42 - version 1

File has no MPEG4 IOD/OD

Track # 1 Info - TrackID 1 - TimeScale 30000 - Duration 00:42:29.133
Media Info: Language "und" - Type "vide" - Sub Type "avc1" - 76474 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:42:28.736
Media Info: Language "und" - Type "soun" - Sub Type "mp4a" - 119472 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000
Synchronized on stream 1

4. 課題事項

  1. muxmovie -startAtによる"Delay frame"の除去は結果が安定しない。映像サンプル数が1減ったり、そのままだったりする。
    1. 厳密には音声抽出を参照形式mov(音声にもトリムがかかっている)から行うか、元の.mp4(音声がトリムされていな い) から行うか選択すべき。
    2. -startAtによるtrimではなく、より直接的な除去手段の発見が望ましい。
  2. 15秒程度の短いクリップでは「選択範囲に調整して追加(3.3.)」は有害だった。音が濁る。「ムービーに追加」がベターな ケースもある。
  3. これらの操作は自動化できない。かつ煩瑣。

5. その他

バージョン
  1. MEncoder:CVS build。概ね1日置き。
  2. ffmpeg:CVS, build 4759, built on Nov  8 2005 22:36:20。Mobile Hackers版
  3. mp4box:ffmpegX 0.0.9uから抽出。
TVカメラ(毎秒60000/1001フィールド)撮影素材と思われるので、インタレ解除はfilmdint。
" -vf filmdint=fast=0/comb_thres=48/io=2997:3000,,,-fps 30000/1001 -ofps 30.000 "
若干のジャギが見える。" io=2997:2997 -fps 29.97 -ofps 30.000 "でも良いのかも知れない。
番組的に戦中の記録フィルムがたくさん出てくるが、そこまで気にしだすとVFRが必要と言う事になる。MEncoderでは手が出ない領域だ。そもそもこ の時代のカメラのfpsが不明。ぐぐって見ると15fps程度のようだが、下手すりゃゼンマイか手回しだし。白黒映像はともかく圧縮しにくく、Xvidで は松平アナ(TVカメラ撮影部分)を犠牲にして24fps化しても残念感が漂った。群衆とか兵隊さんの行進とかめろめろ。元のカメラのフレーム数が少ない からモーションベクトルが大きいし、彩度情報もないし、フィルム傷だらけだし、だからってこの手の番組に2000kbps与えるのもなんだしなぁ、という 残念感にまみれていた(番組内容なんか見ちゃいねぇ^^;)。x264では同じ1000kbps程度でも相当に向上した。
" -ofps 30.000 " は mp4boxでのmux時に-fps 29.97だと地味な端数が出るため。
05/12/17 22:08.32 Sonotoki-1216.mpeg
===MENCODER_PASS1===
12/17 22:08.32
/usr/local/bin/mencoder /Users/USERNAME/Movies/1217/Sonotoki-1216.mpeg -nosound -ovc x264 -x264encopts threads=2:me=3:bitrate=1078:qp_min=10:qp_max=51:i4x4:4x4mv:frameref=5:mixed_refs:subq=6:brdo:trellis=2:keyint=230:scenecut=30:cabac:deblock:nob_adapt:bframes=1:psnr:turbo=1:pass=1 -passlogfile /Users/USERNAME/Movies/1217/Sonotoki-1216.264.log -vf filmdint=fast=0/comb_thres=48/io=2997:3000/crop=704:464:8:8,scale=640:480,hqdn3d=4:3:6,pp=l5,harddup -sws 10 -fps 30000/1001 -ofps 30.000 -of rawvideo -o /dev/null

x264 [info]: no need for a SAR
x264 [info]: using cpu capabilities Altivec
x264 [info]: slice I:514 Avg QP:22.44 size: 25630 PSNR Mean Y:44.12 U:43.20 V:44.97 Avg:44.01 Global:43.70
x264 [info]: slice P:38515 Avg QP:24.26 size: 6285 PSNR Mean Y:42.70 U:40.18 V:42.59 Avg:42.04 Global:41.61
x264 [info]: slice B:37446 Avg QP:26.50 size: 2379 PSNR Mean Y:42.23 U:39.03 V:41.93 Avg:41.30 Global:40.87
x264 [info]: mb I I16..4: 45.8% 0.0% 54.2%
x264 [info]: mb P I16..4: 16.1% 0.0% 2.6% P16..4: 67.1% 7.8% 2.0% 0.0% 0.0% skip: 4.3%
x264 [info]: mb B I16..4: 0.9% 0.0% 0.4% B16..8: 23.8% 0.0% 0.0% direct:48.8% skip:26.1%
x264 [info]: final ratefactor: 23.79
x264 [info]: ref P 83.5% 9.9% 6.6%
x264 [info]: ref B 79.6% 11.9% 8.5%
x264 [info]: PSNR Mean Y:42.478 U:39.637 V:42.285 Avg:41.689 Global:41.245 kb/s:1080.59

Video stream: 1081.828 kbit/s (135228 B/s) size: 344724492 bytes 2549.200 secs 76400 frames
SEC ; 10434
TIME; 2:53.54

===MENCODER_PASS2===
12/18 01:02.26
/usr/local/bin/mencoder /Users/USERNAME/Movies/1217/Sonotoki-1216.mpeg -nosound -ovc x264 -x264encopts threads=2:me=3:bitrate=1078:qp_min=10:qp_max=51:i4x4:4x4mv:frameref=5:mixed_refs:subq=6:brdo:trellis=2:keyint=230:scenecut=30:cabac:deblock:nob_adapt:bframes=1:psnr:pass=2 -passlogfile /Users/USERNAME/Movies/1217/Sonotoki-1216.264.log -vf filmdint=fast=0/comb_thres=48/io=2997:3000/crop=704:464:8:8,scale=640:480,hqdn3d=4:3:6,pp=l5,harddup -sws 10 -fps 30000/1001 -ofps 30.000 -of rawvideo -o /Users/USERNAME/Movies/1217/Sonotoki-1216.264

x264 [info]: no need for a SAR
x264 [info]: using cpu capabilities Altivec
x264 [info]: slice I:514 Avg QP:21.95 size: 25922 PSNR Mean Y:44.36 U:43.44 V:45.18 Avg:44.25 Global:43.93
x264 [info]: slice P:38515 Avg QP:23.95 size: 6293 PSNR Mean Y:43.08 U:40.65 V:43.00 Avg:42.46 Global:42.10
x264 [info]: slice B:37446 Avg QP:26.31 size: 2344 PSNR Mean Y:42.58 U:39.30 V:42.20 Avg:41.65 Global:41.28
x264 [info]: mb I I16..4: 47.0% 0.0% 53.0%
x264 [info]: mb P I16..4: 13.9% 0.0% 4.2% P16..4: 62.6% 12.0% 3.4% 0.1% 0.0% skip: 3.8%
x264 [info]: mb B I16..4: 1.3% 0.0% 0.3% B16..8: 50.6% 0.4% 0.7% direct:15.4% skip:31.3%
x264 [info]: ref P 54.5% 18.3% 13.9% 6.9% 6.4%
x264 [info]: ref B 86.9% 6.9% 4.1% 1.2% 0.9%
x264 [info]: PSNR Mean Y:42.842 U:40.007 V:42.620 Avg:42.075 Global:41.686 kb/s:1077.93

Video stream: 1079.178 kbit/s (134897 B/s) size: 343879935 bytes 2549.200 secs 76400 frames
SEC ; 24240
TIME; 6:44.0

===FFMPEG_AUDIO===
/usr/local/bin/ffmpeg -i /Users/USERNAME/Movies/1217/Sonotoki-1216.264 -i /Users/USERNAME/Movies/1217/Sonotoki-1216.mpeg -y -vn -f mp4 -acodec aac -ar 48000 -ac 2 -ab 64 -map 1.1:0.0 /Users/USERNAME/Movies/1217/Sonotoki-1216.aac.mp4

===MP4BOX_--mux===
/usr/local/bin/mp4box -fps 30.000 -add /Users/USERNAME/Movies/1217/Sonotoki-1216.264 -add /Users/USERNAME/Movies/1217/Sonotoki-1216.aac.mp4 -new /Users/USERNAME/Movies/1217/Sonotoki-1216.mp4
posted by ばる at 17:30| Comment(0) | TrackBack(0) | 圧縮日記264 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

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

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

コメント: [必須入力]

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


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

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

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