†ぽんこつビデオ工房†

音声の入れ替え

作成開始日 2019.12.16
最終更新日 2019.12.16

高画質の英語版と、低画質の日本語版を入手した場合、英語版の映像に日本語版の音声を被せたくなる。
もし、英語と日本語の全尺が同じなら、単純に音声の入れ替え(と微調整)だけで済む。
しかし、たとえば、英語版がBDからのリッピングで、日本語版がTV放送のリッピングだったりすると、
CMカット処理やクレジットの入り方が異なり、単純に音を被せてもタイミングが合わない。
たとえば、こんなカンジのファイルがあった;

  英語版 :オープニング|Aパート|Bパート|予告
  日本語版:オープニング|クレジット|Aパート‖Bパート|予告|クレジット

まず、目につくのは日本語版ではオープニングとAパートの間にスポンサー・クレジット(10秒)が挿入されている点。
単純に英語版に日本語版の音を被せると、確実にここで10秒ずれる。
また、日本語版ではA・Bパート間のCMをカットした事により、1秒ほど尺が短くなっている。
映像はgop単位でしか綺麗に切れないので(無損失編集)、編集個所での1秒程度の誤差の発生は避けられない。
なお、エンディングと予告の間には特にそうした編集の痕跡はないようだ。
また、末尾のクレジットは無視できるので放置しておいてよいと思う。

で、これをどうするかと言うと−−
まず、余分なクレジットが挿入されている問題は、単純に切り取ればよい。
しかし、A・Bパート間は1秒程度のブランクを挿入しないといけない。こちらが難しい。
日本語音声から無音の個所を切り取って、適当に伸ばしたり縮めたりして、任意長の無音ファイルを作成し、
それをA・Bパート間に挟んでバインドする、という方向性で行く。

具体的な作業方法は;

1) まず、日本語版ファイルをAvidemuxで開いて、以下の3個所の位置を確認する。

 	@オープニング
 03:00	クレジット
 03:10	AAパート
 11:00	BBパート
 	クレジット

 ※便宜上、ここでは位置を秒単位で指定しているが、実際は0.1秒単位の精度が必要。

2) 日本語版ファイルから、上記の@ABの部分の音声のみを切り出す。
 Aの長さ(-t)の計算がちょっと面倒臭いが…(11'00"-3'10"=8'50")。

 @ffmpeg -i jp.mp4 -t 3:00 -vn jp-1.mp3
 Affmpeg -ss 3:10 -i jp.mp4 -t 8:50 -vn jp-2.mp3
 Bffmpeg -ss 11:00 -i jp.mp4 -vn jp-3.mp3

 ※m4aではなく、mp3に変換するのは編集精度の問題
 m4aを映像とバインドすると、切ったはずの部分の残滓が出て来ることがある

3) この@〜Bを単純にバインドして調整用音声ファイルを作成する。
 このファイルは音ずれの程度を確認するためのもの。

 ffmpeg -i jp-1.mp3 -i jp-2.mp3 -i jp-3.mp3 -filter_complex "concat=n=3:v=0:a=1" jpx.mp3

 ※-f concat(無変換)ではなく、-filter_complex(再エンコ)を指定しているのは、誤差の発生を防ぐため。

4) smplayerで英語版ファイルを開き、音声トラック(外部ファイル)にこのjpx.mp3を指定する。
 そして、遅延設定を使って、先頭部分の音合わせをする。
 ここでは、先頭での音ずれが200msであったとする。
 次に、Aパートでも同様に音合わせをする;恐らく、先頭と同じ値(200ms)になるだろう。
 さらに、Bパートでも音合わせをする;ここはCMカット分の誤差が効いて1200msになったとする。
 そうすると、AとBの間に1200ms-200ms=1000msのブランクを挟めばよいことになる。

5) ffmpegなどを使って、jp.mp3の適当な位置(ここでは仮に2'58"とする)から無音部分を1秒切り出す。
 なお、ここでは仮に、1秒間の無音ファイルを「b1000.mp3」と名付ける。

 ffmpeg -ss 2:58 -i jp.mp3 -t 1 b1000.mp3

6) 無音ファイルを挟んでバインドし直す;

 ffmpeg -i jp-1.mp3 -i jp-2.mp3 -i b1000.mp3 -i jp-3.mp3 -filter_complex "concat=n=4:v=0:a=1" jpx.mp3

7) 最後に、この音声ファイルと英語版の映像を結合する。

 ffmpeg -i eng.mp4 -itsoffset 0.2 -i jpx.mp3 -map 0:v -map 1:a -c copy out.mp4

 なお「-itsoffset 0.2」は先頭部分の音ずれ200msを意味する。
 ただし、このオフセットが大きくなると、再生時にスムーズにスキップできないことがある。
 長めのオフセットが必要な場合は、6)の段階で頭に必要なサイズのブランクをバインドする方が良い。


【ぽんこつビデオ工房目次】 【ホーム】