ffmpeg, adelay 및 amix를 사용할 때 오디오가 동기화되지 않음

ffmpeg, adelay 및 amix를 사용할 때 오디오가 동기화되지 않음

시작 시간 오프셋이 있는 일련의 mp3 파일이 있습니다.

나는 adelay와 amix를 함께 병합하려고합니다.

다음 코드는 실행되어 결합된 MP3를 생성하지만 최종 출력 파일을 들을 때 사람들이 무례하다는 의미가 아니라 오디오가 동기화되지 않는다는 의미에서 서로 이야기하는 지점이 있습니다.

시작 및 중지 시간 오프셋이 포함된 파일은 다음과 같습니다.

d4a19a58-790a-45c1-b96e-819bc98cd408.webm | 1720 | 3762173
ab794f92-bdfb-4bb0-821d-ba80c8a9228a.webm | 48920 | 3328385
a7df9a51-0671-4930-a14b-e7d85a562577.webm | 76220 | 3763361
5d312878-d25d-40d7-9418-bed85e22efc6.webm | 3109640 | 3267473
1cf6127d-250a-4601-a219-b1b6bbd725f8.webm | 3360980 | 3636927
c3ddd462-e05a-425f-af58-f288f930f2cb.webm | 3689600 | 3760423

다음은 가독성을 위해 webm 파일을 MP3로 변환하는 데 사용한 명령입니다.

ffmpeg 
-acodec libopus 
-i d4a19a58-790a-45c1-b96e-819bc98cd408.webm 
-b:a 320K 
-vn 
-y d4a19a58-790a-45c1-b96e-819bc98cd408.mp3

다음은 가독성을 높이기 위해 모든 mp3를 줄로 결합하는 명령입니다.

ffmpeg 
-i d4a19a58-790a-45c1-b96e-819bc98cd408.mp3 
-i ab794f92-bdfb-4bb0-821d-ba80c8a9228a.mp3 
-i a7df9a51-0671-4930-a14b-e7d85a562577.mp3 
-i 1cf6127d-250a-4601-a219-b1b6bbd725f8.mp3 
-i c3ddd462-e05a-425f-af58-f288f930f2cb.mp3 
-filter_complex "
[0]adelay=1720|1720[a0];
[1]adelay=48920|48920[a1];
[2]adelay=76220|76220[a2];
[3]adelay=3360980|3360980[a3];
[4]adelay=3689600|3689600[a4];
[a0][a1][a2][a3][a4]amix=inputs=5
" 
out.mp3 -y

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?

답변1

다음을 사용하여 동일한 값을 가진 모든 오디오 채널을 지연시켜야 합니다.adelay=밀리초:모두=true, 그리고 사용-비동기 1명령이 끝나면 ffmpeg는 스트레칭/압착 대신 오디오 스트림의 시작 부분만 수정합니다.

귀하의 경우에는 :

ffmpeg 
-i input1.webm 
-i input2.webm
-i input3.webm
-i input4.webm
-i input5.webm
-filter_complex "
[0]adelay=1720:all=true[a0];
[1]adelay=48920:all=true[a1];
[2]adelay=76220:all=true[a2];
[3]adelay=3360980:all=true[a3];
[4]adelay=3689600:all=true[a4];
[a0][a1][a2][a3][a4]amix=inputs=5 [out]
"
-map "[out]"
out.webm -async 1 -y

문서에 따르면 :

-비동기 샘플_초당

오디오 동기화 방법. 타임스탬프와 일치하도록 오디오 스트림을 "늘리거나 압착"합니다. 매개변수는 오디오가 변경되는 초당 최대 샘플입니다.-async 1은 이후 수정 없이 오디오 스트림의 시작 부분만 수정되는 특별한 경우입니다.

관련 정보