ffmpegでは、オーディオを変換せずに.mp4ビデオのオーディオのみを遅延させる方法は?


40

.mp4ファイルでは、オーディオ遅延は-3840ミリ秒です。KMplayerで同期しましたが、MKVGUIを使用して.mkvファイルを作成したくありません。音声を-3840ミリ秒だけ遅延させる必要がありますが、それ以外はすべてそのままです。
ffmpegを使用してこれを達成するための正しいコマンドは何でしょうか?
よろしくお願いします。

回答:


65

ビデオを3.84秒遅延させる必要がある場合は、次のようなコマンドを使用します。

ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 1:v -map 0:a -c copy "movie-video-delayed.mp4"

オーディオを3.84秒遅延させる必要がある場合は、次のようなコマンドを使用します。

ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 0:v -map 1:a -c copy "movie-audio-delayed.mp4"

ffmpegビルドが古すぎないことを確認してください。2012年で十分です。


説明

-itsoffset 3.84 -i "movie.mp4"

オプションに続く入力ファイル(movie.mp4)で、すべてのストリームのタイムスタンプを3.84秒オフセットします。

-map 1:v -map 0:a

2番目の(遅延)入力からビデオストリームを取得し、最初の入力からオーディオストリームを取得します。もちろん、両方の入力が同じファイルである場合があります。

より詳細な説明はここにあります:http :
//alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/


1
すべてのオーディオトラックを遅延させるのではなく、特定のオーディオトラックをどのように選択しますか?
Freedo

マップオプションの機能を使用します。最初に、これらのコマンドのいずれかを使用して、入力ファイルで目的のオーディオストリームのインデックスを見つける必要があります。ffprobe.exe "input_file.mp4"またはffmpeg.exe -i "input_file.mp4" 、遅延するオーディオストリームのインデックスが2(つまり、3番目のストリーム)であり、遅延入力が2番目(私の例のように)。のみ第三の流れを遅延させるために、第二の(遅延)入力から第一の入力と一つのオーディオストリームから他のすべてのストリームを取る:-map 0:0 -map 0:1 -map 1:2
ウィーバー

それは私が意図したものではなく、親切です。この場合、ffmpegを呼び出して結果を解析し、インデックスを見つける必要があります。-map eng
Freedo

@Freedoは、既にsuperuser.com/questions/639402 / ...でアドバイスされているように、メタデータ値を使用してストリーム指定することで実際に可能です。たとえば-map 1:m:language:eng 、すべてのストリームを選択することに注意してくださいおそらく複数のオーディオおよび/または字幕ストリームを含む、基準を満たす。あなたにはより多くの情報を見つけることができますstackoverflow.com/questions/46769419/...
ウィーバー

1
AFAIKはの-c copy代わりに使用でき-vcodec copy -acodec copyitsoffsetビデオにのみ影響するため、これは同じように機能する可能性がありますか?:ffmpeg -i "movie.mp4" -itsoffset 3.84 -c copy "movie-video-delayed.mp4"そして、代わりにオーディオに遅延をかけるには、持続時間に負の符号を追加し-3.84ます:
miyalys

0

最初の無音オーディオを作成します。

ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 3 silence_3_sec.mp3

次に、ファイルを連結します。

ffmpeg -i "concat:silence_3_sec.mp3|input.mp3" -acodec copy out.mp3
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.