it-swarm.com.de

Wie kann man in ffmpeg nur das Audio eines MP4-Videos verzögern, ohne das Audio zu konvertieren?

In meiner .mp4-Datei beträgt die Audioverzögerung -3840 ms. Ich habe es in KMplayer synchronisiert und möchte MKVGUI nicht zum Erstellen einer MKV-Datei verwenden. Ich muss den Ton nur um -3840 ms verzögern, alles andere ist intakt.
Was wäre der richtige Befehl, um dies mit ffmpeg zu erreichen?
Ich würde Ihre Hilfe schätzen.

38
Alireza

Wenn Sie Video verzögern um 3,84 Sekunden benötigen, verwenden Sie einen Befehl wie diesen:

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

Wenn Sie Audio verzögern müssen um 3,84 Sekunden, verwenden Sie einen Befehl wie diesen:

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

Stellen Sie sicher, dass Ihr ffmpeg-Build nicht zu alt ist. Neuere Versionen als 2012 werden ausreichen.


Erklärung

-itsoffset 3.84 -i "movie.mp4"

Versetzt die Zeitstempel aller Streams in der Eingabedatei, auf die folgt die Option (movie.mp4), um 3,84 Sekunden.

-map 1:v -map 0:a

Nimmt den Videostream vom zweiten (verzögerten) Eingang und den Audiostream vom ersten Eingang - beide Eingänge können natürlich dieselbe Datei sein.

Eine ausführlichere Erklärung finden Sie hier:
http://alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/

60
Weaver

erstes Stille-Audio erstellen:

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

dann concat files:

ffmpeg -i "concat: silence_3_sec.mp3 | input.mp3" -acodec copy out.mp3

0
Ivan Malyshev