mp3 파일에서 오디오 조각 추출 - 예상치 못한 결과

mp3 파일에서 오디오 조각 추출 - 예상치 못한 결과

명령줄 도구를 사용하여 오디오 조각을 추출하려고 합니다. 일관되고 예상치 못한 결과가 나오는데 이는 오디오 파일이 생성/인코딩된 방식 때문이라고 생각합니다.

참고: 콘텐츠를 공유하는 다른 접근 방식이 있다는 것을 알고 있습니다. 컴퓨터에 능숙하지 않거나 원시 콘텐츠에서 지리적으로 차단된 사용자와 콘텐츠를 공유하기 위해 이 방법을 사용하고 있습니다.

문제 설명/재현 단계:

  • 나는 다음을 사용하여 시작합니다.yt-dlp다음과 같은 팟캐스트를 다운로드하려면이 하나이 명령을 사용하면:
    yt-dlp -x --audio-format mp3 -o GQT_2012-10-14.mp3 https://www.bbc.co.uk/programmes/b01n6vnh

  • 파일이 다운로드되어 올바르게 재생됩니다. 20:48에 시작하여 03:58에 지속되는 스니펫을 추출하여 24:46에 끝나도록 하고 싶습니다.

  • 나는 이것을 처음으로 사용해 보았습니다.FFmpeg(Ubuntu 20.04의 버전 4.2.7-0ubuntu0.1) 다음 명령을 사용하면
    ffmpeg -i "/home/user/GQT_2012-10-14.mp3" -ss 00:20:48 -t 00:03:58 GQT_2012-10-12_Snippet1.mp3
    3분 58초 길이의 파일이 생성되지만 시작 시간은 원본 파일의 20:28에 해당합니다.

  • 그런 다음 사용해 보았습니다.Mp3Splt(동일한 OS의 버전 2.6.2. 이것이 이전 버전이라는 것을 알고 있습니다.) 다음 명령을 사용하면 다음과 같은 출력이 생성됩니다.
    mp3splt "/home/user/GQT_2012-10-14.mp3" -o GQT_2012-10-12_Snippet1 20.48.00 24.46.00
    이는 올바른 길이이지만 예상 시작 시간 측면에서 20초 빠른 파일인 동일한 출력을 생성합니다.

두 명령줄 도구의 동일한 결과를 고려하면 문제가 입력 파일에 있음을 나타냅니다. 를 이용해서 확인해 보았습니다 ffprobe. 출력에서 나는 이것을 보았습니다. Duration: 00:43:00.09, start: 0.025057, bitrate: 141 kb/s파일이 25밀리초부터 시작하는 것으로 "태그"되어 있다고 해석합니다. 확실히 20초는 아닙니다.

어쨌든 이것을 0으로 재설정하려고 시도했습니다.이 답변, 나는 성공하지 못했습니다.

추출된 스니펫에서 오류의 근본 원인을 파악하고 수정하려고 합니다.

답변1

귀하가 제공한 파일로 몇 가지 테스트를 수행한 결과 귀하의 ffmpeg 명령이 실제로 귀하가 요청한 정확한 위치에서 파일을 잘라낸다고 생각합니다.

나는 여기서 실제 문제는 다음과 같다고 생각한다.플레이어탐색 시 잘못된 타임스탬프 표시( vlc및 둘 다 시도했는데 mplayer비슷하게 동작하는 것 같습니다): vlc파일을 앞으로 탐색하지 않고 처음부터 재생하도록 하면(실제로는 20분 동안 백그라운드에서 실행되도록 했습니다!) 20에 도달하면 :48 ffmpeg가 생성한 파일이 시작되는 위치와 정확히 같은 위치에 있습니다! 대신 에서 플레이를 시작 vlc하고 앞으로 건너뛰면 해당 위치가 대신 20:28로 표시됩니다! 내 추측으로는 해당 플레이어를 검색하면 다음 키프레임(또는 유사한 것? mp3 형식의 내부에 익숙하지 않음)으로 건너뛰고 비트 전송률(가변)을 기준으로 경과 시간을 추정하는 것입니다. vlc를 실행하고 끝까지 탐색하여 vlc가 43분 동안 계속 재생되는 것을 확인하면 이 효과를 매우 잘 보여줄 수 있습니다(42:42에 탐색을 시도했는데 43:08까지 재생되었습니다).

요약하자면, mp3에서 정확한 타이밍을 얻으려면 플레이어가 표시한 타임스탬프를 사용하는 것이 좋은 선택이 아닌 것 같습니다 vlc. mplayer대신 다음과 같은 오디오 편집 프로그램을 사용할 수 있습니다.audacity, 처음에 전체 파일을 디코딩하므로 타이밍이 정확해야 합니다. 물론 절단 부분에도 사용할 수 있으므로 ffmpeg이 경우에는 처음부터 시작할 필요가 없습니다.

관련 정보