オーディオが遅れている(オーディオとビデオが同期していない)m4v ビデオを修正します

オーディオが遅れている(オーディオとビデオが同期していない)m4v ビデオを修正します

Windows に関する同様の質問は次のとおりです。

オーディオと同期していないビデオを修正するツールはありますか?

この問題を Mac で解決したいと考えています。

Handbrake と Avidemux を試しました (後者には、この問題を修正するためのオプション (「shift」) があるようですが、オーディオがまったく再生されないため、何か効果があるのか​​わかりません)。

答え1

FFmpeg のコピーを入手してください。その方法については、この投稿の下部を参照してください。

ビデオがオーディオより遅れているかどうか、またはその逆かどうかは、実際には問題ではありません。基本的なコマンドは次のとおりです。2 つのオプションからわかるように、入力を 2 回渡し-i、1 つの入力を遅延させて、それらを再び結合します。

ffmpeg -i in.flv -itsoffset offset -i in.flv -map 1:0 -map 0:1 -c copy out.flv

ここ、offsetは、遅延を秒単位で表したものです。たとえば、1.5または です0.35。この値は正の値でなければならないため、オーディオがビデオより遅れている場合は、ビデオをオフセットする必要があります。これは上記の例に示されています。同様に、ビデオがオーディオより遅れている場合は、オーディオをオフセットする必要があります。

では、オーディオとビデオのどちらを遅延させるかはどうやって決めるのでしょうか。全体を遅延させたので、in.flvオーディオまたはビデオ ストリームを選択して、元のオーディオまたはビデオ ストリームと結合します。これはオプションで行います-map

基本的に、map2 つの数字があります。コロンの前の数字は入力ファイル番号 (0 から始まる) を指定し、2 番目の数字は入力ファイル ストリーム (これも 0 から始まる) を指定します。

したがって、オーディオを遅延させるには、次の 2 つのオプションを使用します。

  • -map 1:0意味: 2番目の入力ファイルから最初のストリームを取得します (元のファイルからのビデオ)
  • -map 0:1意味: 最初の入力ファイルから2番目のストリームを取得します(遅延ファイルからのオーディオ)

ビデオを遅らせる必要がある場合は、これを逆にします。

  • -map 0:0意味: 最初の入力ファイルから最初のストリームを取得します(遅延ファイルからのビデオ)
  • -map 1:1意味: 2番目の入力ファイルから2番目のストリームを取得します(元のファイルからのオーディオ)

最後に、-c copyFFmpeg にビデオとオーディオのビットストリームをコピーするように指示します。つまり、エンコード プロセスは行われません。これにより、コマンドは超高速になり、プロセス中に品質が損なわれることもありません。ただし、同期エラーが発生した場合は、省略して-c copy、FFmpeg に入力を再エンコードさせる必要があります。


最新の安定したFFmpegバージョンは以下から入手できます。自家製

  • ターミナルを開き、次のように入力します。

      ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
    
  • を参照してくださいインストール要件も同様です。まだインストールしていない場合は、Xcode のコマンドライン ツールをインストールする必要があります。そのためには Apple ID が必要になります。

  • Homebrew をインストールしたら、FFmpeg をインストールします。

      brew install ffmpeg
    
  • それが完了したら、FFmpeg を使用してビデオを修正できます。

関連情報