특정 위치의 많은 오디오 파일을 병합합니다.

특정 위치의 많은 오디오 파일을 병합합니다.

세션을 나타내는 오디오 파일이 여러 개 있습니다. 따라서 한 폴더에는 다음이 있을 수 있습니다.

2016-06-22-15-59-59-000.mka
2016-06-22-16-59-59-001.mka
2016-06-22-17-59-59-002.mka

파일 이름은 이 파일이 생성된 날짜와 시간입니다. 예를 들어 첫 번째 파일은 6월 22일 15시 59분에 생성되었습니다. 16시 59분에 두 번째.

오디오 지속 시간은 다양할 수 있으며 고정된 지속 시간은 없습니다. 예를 들어 사용자는 5초 또는 10분 동안 세션에 연결할 수 있습니다. 따라서 첫 번째 기간은 00:05이고 두 번째 기간은 10:00입니다.

이러한 파일은 함께 세션을 나타내므로 병합해야 합니다. 오디오 컨퍼런스에 사용되는 동일한 전화번호로 여러 사람이 전화를 걸고 있다고 생각하면 됩니다.

예를 들어, Alice, Bob, John은 어떤 것에 대해 토론하고 싶어합니다. 앨리스는 555-111-22-33번으로 전화를 걸고 있고, 밥은 1분 후에 같은 번호로 전화를 걸고 있습니다. 그들은 5분간 함께 이야기를 나눈다. 그리고 30분 후 Bob과 John은 동시에 같은 번호로 전화를 걸었습니다. 그리고 1분 뒤에 앨리스가 합류하게 됩니다.

따라서 이 경우에는 여러 오디오 스트림이 있습니다. 이러한 스트림은 일반적으로 겹치지만 항상 그런 것은 아닙니다. 예를 들어, Alice가 처음에 Bob을 기다리고 있을 때 우리는 이미 그녀를 녹음하고 있으며 이 세션에는 다른 사람이 없으므로 이 오디오 스트림은 다른 오디오 스트림과 겹치지 않습니다.

저는 각 사람의 오디오 녹음을 하나의 파일로 병합하는 가장 좋은 방법을 찾고 있습니다. 따라서 이 파일에서는 모든 사람의 말을 들어야 합니다. 그리고 통화 사이에 Alice, Bob, John이 세션에 없을 때는 침묵이 있어야 합니다.

ffmpeg 문서를 보고 있는데 겹치는 스트림을 생성하고 스트림이 시작되어야 하는 정확한 시간을 지정하는 데 사용할 수 있는 옵션을 찾을 수 없습니다.

가장 좋은 방법이 무엇인지 아시나요? 어쩌면 ffmpeg보다 더 나은 도구가 필요할 수도 있고, 그렇게 하기 위해 라이브러리와 프로그래밍 언어를 사용하여 나만의 프로그램을 만들어야 할 수도 있습니다. 감사해요

답변1

첫 번째 오디오 시작의 상대적 시간을 로 지정해 보겠습니다 t=0. 따라서 첫 번째 오디오 녹음이 에 시작 16:59:23되고 세 번째 녹음이 에 시작된 경우 17:14:13세 번째의 상대 시작 시간은 입니다 14:50.

이를 염두에 두고 기본 명령 구조는 다음과 같습니다.

ffmpeg -i first.mka -i second.mka -i third.mka -i fourth.mka
       -filter_complex
         "[1]adelay=184000|184000[b];
          [2]adelay=360000|360000[c];
          [3]adelay=962000|962000[d];
          [0][b][c][d]amix=4"
merged.mka

명령이 수행하는 작업은 실제 상대적 시작 시간과 일치하도록 첫 번째 오디오 파일을 제외한 각 오디오 파일의 상대적 시작을 지연시키는 것입니다. 그런 다음 지연된 모든 오디오 스트림이 함께 혼합됩니다. 필터 amix는 필요한 곳에 무음을 삽입합니다.

adelay밀리초 단위의 값이 필요하므로 3분 4초는 184초가 184000ms입니다. 오디오 스트림의 각 채널에 대해 값을 제공해야 하므로 모노 스트림을 처리하는 경우 [1]adelay=184000[b]다음이 구문입니다.

관련 정보