Jeśli chcesz opóźnić wideo o 3,84 sekundy, użyj następującego polecenia:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 1:v -map 0:a -c copy "movie-video-delayed.mp4"
Jeśli chcesz opóźnić dźwięk o 3,84 sekundy, użyj następującego polecenia:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 0:v -map 1:a -c copy "movie-audio-delayed.mp4"
Upewnij się, że twoja kompilacja ffmpeg nie jest za stara, wystarczy nowsza wersja niż 2012.
Wyjaśnienie
-itsoffset 3.84 -i "movie.mp4"
Przesuwa znaczniki czasu wszystkich strumieni o 3,84 sekundy w pliku wejściowym następującym po opcji (movie.mp4).
-map 1:v -map 0:a
Pobiera strumień wideo z drugiego (opóźnionego) wejścia i strumień audio z pierwszego wejścia - oba wejścia mogą oczywiście być tym samym plikiem.
Bardziej szczegółowe wyjaśnienie można znaleźć tutaj:
http://alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/
ffprobe.exe "input_file.mp4"
lubffmpeg.exe -i "input_file.mp4"
Załóżmy, że indeks strumienia audio, który ma być opóźniony, wynosi 2 (tj. Trzeci strumień) i że opóźnione wejście to drugi (jak w moim przykładzie). Aby opóźnić tylko trzeci strumień, weź wszystkie inne strumienie z pierwszego wejścia i tylko jeden strumień audio z drugiego (opóźnionego) wejścia:-map 0:0 -map 0:1 -map 1:2
-map 1:m:language:eng
Pamiętaj jednak, że wybierze wszystkie strumienie spełniające kryterium, ewentualnie obejmujące wiele strumieni audio i / lub napisów. Więcej informacji można znaleźć na stronie stackoverflow.com/questions/46769419/...-c copy
można stosować zamiast-vcodec copy -acodec copy
, aitsoffset
jedynie wpływa na wideo, więc może to będzie działać tak samo ?:ffmpeg -i "movie.mp4" -itsoffset 3.84 -c copy "movie-video-delayed.mp4"
i opóźnić dźwięk zamiast po prostu dodać znak ujemny na czas trwania:-3.84
.Zrób pierwszą ciszę audio:
Następnie pliki konkat:
źródło