m4a 오디오 파일의 앞부분에서 처음 8초와 마지막 8초를 잘라낸 다음 끝 부분을 다듬고 파일의 나머지 부분을 유지하는 방법

m4a 오디오 파일의 앞부분에서 처음 8초와 마지막 8초를 잘라낸 다음 끝 부분을 다듬고 파일의 나머지 부분을 유지하는 방법

처음 8초를 제거하고 파일의 나머지 부분은 그대로 유지하려는 .m4a 오디오 파일이 있습니다. 그런 다음 첫 번째 단계가 완료되면 파일의 마지막 8초를 삭제하고 파일의 나머지 부분을 유지합니다. 손대지 않은.

따라서 기본적으로 처음 8초는 파일에서 완전히 삭제/제거되며, 파일은 처음 8초가 전혀 존재하지 않았던 것처럼 두 번째 8초에서 시작됩니다.
마찬가지로 파일의 마지막 8초도 삭제됩니다.

이 모든 작업은 파일을 다시 인코딩하지 않고도 수행됩니다.

(편집하다: 여기와 다른 곳에서 다른 답변을 보았지만 다른 답변에서는 잘린 섹션의 시작 및 종료 시간을 제공해야 했기 때문에 작동하지 못했습니다. 나에게 필요한 것은 ffmpeg가 이를 파악하여 명령에 입력할 필요 없이 .m4a 오디오 파일의 종료 타임스탬프와 시작 타임스탬프를 제공하는 것입니다.

나는 이것을 파일의 앞부분을 다듬는 데 사용합니다.

ffmpeg -t 00:00:08 -acodec copy -i in_file.m4a out_file.m4a

그러나 파일 끝을 다듬는 데는 아무것도 사용되지 않습니다.

나는 내가 해야 할 일을 얻을 수 없었다.

(여기와 다른 곳에서 몇 가지 다른 답변을 보았지만 아무것도 거기에 도달하지 못하는 것 같습니다)

답변1

이렇게 하면 다시 인코딩하지 않고 파일 앞부분의 처음 8초를 잘라내고 출력 파일의 처음 8초를 제외한 모든 부분을 유지합니다.

ffmpeg -ss 8 -i in_file.m4a -c copy out_file.m4a

또한 다음 줄은 오디오 파일 끝에서 마지막 8초를 잘라냅니다. 아래 줄은 복잡해 보이지만 제가 볼 수 있는 가장 간단한 솔루션이며 파일 끝을 잘라냅니다.

ffmpeg -i in_file.m4a -ss 8 -i in_file.m4a -c copy -map 1:0 -map 0 -shortest -f nut - | ffmpeg -y -f nut -i - -map 0 -map -0:0 -c copy out_file.m4a

답변2

ffmpeg 대신 오디오에 더욱 특화된 SoX를 사용할 수 있지만 먼저 오디오 파일을 wav 또는 mp3로 변환해야 합니다. SoX는 m4a에서 작동하지 않는 것 같습니다.

ffmpeg -i input.m4a output.wav

SoX를 설치한 후

sudo apt-get install sox
sox input.wav output.wav trim 8 -8

다소 관련이 있지만, 소리가 나지 않는 부분만 제거하려는 경우 Librosa를 사용하여 이를 달성할 수도 있습니다.

Librosa에서 m4a 형식을 사용하려면 Debian/Ubuntu에 ffmpeg 및 GStreamer를 설치해야 합니다:

sudo apt install libgstreamer1.0-0 

sudo apt install ffmpeg

그런 다음 Python에서는 다음을 사용할 수 있습니다.

import librosa 
y, sr = librosa.core.load(m4a_audio_file, sr=16000)
yt, index = librosa.effects.trim(y)
original_duration= librosa.get_duration(y)
new_duration = librosa.get_duration(yt)

관련 정보