ffmpeg에서 오디오를 변환하지 않고 .mp4 비디오의 오디오 만 지연시키는 방법은 무엇입니까?


44

내 .mp4 파일에서 오디오 지연은 -3840ms입니다. KMplayer에서 동기화했으며 MKVGUI를 사용하여 .mkv 파일을 만들고 싶지 않습니다. 오디오를 -3840ms 지연시켜야합니다. 다른 모든 것은 그대로입니다.
ffmpeg를 사용하여 이것을 달성하는 올바른 명령은 무엇입니까?
도와 주셔서 감사합니다.

답변:


72

비디오 를 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

두 번째 (지연) 입력에서 비디오 스트림을 가져오고 첫 번째 입력에서 오디오 스트림을 가져옵니다. 두 입력은 물론 동일한 파일 일 수 있습니다.

더 자세한 설명은 여기에서 찾을 수 있습니다 :
http://alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/


2
모든 오디오 트랙을 지연시키는 대신 하나의 특정 오디오 트랙을 어떻게 선택합니까?
Freedo

1
지도 옵션 기능 사용 . 먼저 다음 명령 중 하나를 사용하여 입력 파일에서 원하는 오디오 스트림의 색인을 찾아야합니다. ffprobe.exe "input_file.mp4"또는 ffmpeg.exe -i "input_file.mp4" 지연 될 오디오 스트림의 색인이 2 (예 : 세 번째 스트림)이고 지연된 입력이 두 번째 (내 예에서와 같이). 세 번째 스트림 만 지연 시키려면 첫 번째 입력에서 다른 모든 스트림과 두 번째 (지연) 입력에서 하나의 오디오 스트림 만 가져옵니다.-map 0:0 -map 0:1 -map 1:2
Weaver

그건 내가 의도 한 바가 아니에요 이 경우에도 여전히 ffmpeg를 호출하고 색인을 찾기 위해 결과를 구문 분석해야합니다. -map eng
Freedo

자, @Freedo는 superuser.com/questions/639402/… 에서 이미 조언했듯이 메타 데이터 값을 사용 하여 스트림지정 하여 실제로 제안 할 수 있습니다. 예를 들어 -map 1:m:language:eng , 모든 스트림을 선택할 것입니다 다수의 오디오 및 / 또는 자막 스트림을 포함하는 기준을 만족시키는 것. stackoverflow.com/questions/46769419/…
Weaver

1
AFAIK는 -c copy대신 사용할 수 있습니다 -vcodec copy -acodec copy, 그리고 itsoffset어쩌면이 같은 일을 할?, 비디오 만 영향을 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.