비디오 파일에서 오디오를 추출하는 과정은 매우 간단하지만, 다양한 옵션을 제공하여 여러 상황에 맞게 설정할 수 있다. FFMPEG을 활용하여 비디오에서 오디오를 추출하는 방법을 단계별로 설명하겠다.

1. 기본 명령어

비디오 파일에서 오디오를 추출하는 가장 기본적인 명령어는 다음과 같다.

ffmpeg -i input_video.mp4 -q:a 0 -map a output_audio.mp3

이 명령어는 다음과 같은 작업을 수행한다:

2. 오디오 포맷 설정

오디오 포맷은 추출 시 자유롭게 선택할 수 있으며, 파일 확장자에 따라 FFMPEG이 자동으로 인식한다. 예를 들어, 추출한 오디오를 .wav로 저장하고 싶다면 다음과 같이 명령어를 변경할 수 있다.

ffmpeg -i input_video.mp4 -q:a 0 -map a output_audio.wav

여기서 .wav 확장자를 사용함으로써 무손실 오디오 파일로 추출할 수 있다.

3. 오디오 비트레이트 설정

오디오 비트레이트는 오디오 파일의 품질과 크기에 영향을 미치는 중요한 요소이다. 비트레이트를 지정하여 오디오 파일의 품질을 조정할 수 있다. 예를 들어, 128 kbps로 비트레이트를 설정하려면 다음과 같이 명령어를 입력한다.

ffmpeg -i input_video.mp4 -b:a 128k -map a output_audio.mp3

이 옵션은 추출된 오디오의 크기와 품질에 직접적인 영향을 미친다.

4. 특정 오디오 트랙 추출

비디오 파일에 여러 오디오 트랙이 포함된 경우, 특정 트랙을 선택하여 추출할 수 있다. -map 옵션을 활용하여 원하는 트랙만 추출하는 방법은 다음과 같다.

ffmpeg -i input_video.mkv -map 0:a:1 output_audio.mp3

5. 비디오 파일에서 오디오 제거 후 저장

비디오에서 오디오를 추출한 후, 원본 비디오에서 오디오를 제거한 상태로 비디오 파일을 다시 저장할 수 있다. 다음 명령어를 사용한다.

ffmpeg -i input_video.mp4 -an -c:v copy output_video.mp4

6. 특정 시간 구간에서 오디오 추출

비디오 파일에서 특정 시간 구간의 오디오만 추출할 수도 있다. 이를 위해 -ss-to 또는 -t 옵션을 사용하여 시작과 끝 시간을 설정할 수 있다.

예를 들어, 00:01:00부터 00:02:00까지의 오디오만 추출하려면 다음과 같이 명령어를 입력한다.

ffmpeg -i input_video.mp4 -ss 00:01:00 -to 00:02:00 -q:a 0 -map a output_audio.mp3

또는, 종료 시간을 지정하지 않고, 시작 시간에서부터 1분간의 오디오만 추출하려면 -t 옵션을 사용한다.

ffmpeg -i input_video.mp4 -ss 00:01:00 -t 00:01:00 -q:a 0 -map a output_audio.mp3

7. 여러 파일에서 오디오 추출

여러 비디오 파일에서 오디오를 한 번에 추출할 수 있다. 이는 배치 처리를 통해 가능하며, 스크립트를 작성하여 다수의 파일을 처리하는 방식으로 진행된다.

예를 들어, 모든 .mp4 파일에서 오디오를 추출하려면 다음과 같은 스크립트를 사용할 수 있다.

Bash 스크립트 예시 (Linux/MacOS)

for file in *.mp4; do
  ffmpeg -i "$file" -q:a 0 -map a "${file%.mp4}.mp3"
done

8. 여러 트랙의 오디오 추출

비디오 파일에 여러 오디오 트랙이 포함된 경우, 각 트랙을 따로 추출할 수 있다. 아래는 두 개의 오디오 트랙이 포함된 비디오 파일에서 두 트랙을 각각 추출하는 예시이다.

ffmpeg -i input_video.mkv -map 0:a:0 output_audio1.mp3 -map 0:a:1 output_audio2.mp3

이와 같이 각 트랙을 원하는 파일로 저장할 수 있다.

9. 여러 오디오 스트림을 하나의 파일로 병합

여러 개의 오디오 스트림을 하나의 파일로 병합할 수도 있다. 예를 들어, 두 개의 비디오 파일에서 각각 오디오를 추출한 뒤 하나의 파일로 병합하려면 다음과 같은 명령어를 사용할 수 있다.

ffmpeg -i input_audio1.mp3 -i input_audio2.mp3 -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[out]" -map "[out]" output_audio.mp3

10. 오디오 트랙 간 동기화 문제 해결

비디오 파일에서 여러 개의 오디오 트랙을 추출할 때, 각 트랙 간의 동기화 문제가 발생할 수 있다. 이를 해결하기 위해 -itsoffset 옵션을 사용하여 시간 오프셋을 적용할 수 있다.

예를 들어, 두 번째 트랙에 1초의 시간차를 적용하려면 다음과 같이 명령어를 작성한다.

ffmpeg -i input_video.mkv -map 0:a:0 output_audio1.mp3 -itsoffset 00:00:01 -map 0:a:1 output_audio2.mp3

이를 통해 두 트랙 간의 동기화 문제를 해결할 수 있다.