비디오 파일에서 오디오를 추출하는 과정은 매우 간단하지만, 다양한 옵션을 제공하여 여러 상황에 맞게 설정할 수 있다. FFMPEG을 활용하여 비디오에서 오디오를 추출하는 방법을 단계별로 설명하겠다.
1. 기본 명령어
비디오 파일에서 오디오를 추출하는 가장 기본적인 명령어는 다음과 같다.
ffmpeg -i input_video.mp4 -q:a 0 -map a output_audio.mp3
이 명령어는 다음과 같은 작업을 수행한다:
-i input_video.mp4
: 입력 비디오 파일을 지정한다.-q:a 0
: 오디오 품질을 최대화한다.-map a
: 오디오 스트림만 추출한다.output_audio.mp3
: 추출된 오디오 파일을 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
-b:a 128k
: 오디오 비트레이트를 128 kbps로 설정한다.
이 옵션은 추출된 오디오의 크기와 품질에 직접적인 영향을 미친다.
4. 특정 오디오 트랙 추출
비디오 파일에 여러 오디오 트랙이 포함된 경우, 특정 트랙을 선택하여 추출할 수 있다. -map
옵션을 활용하여 원하는 트랙만 추출하는 방법은 다음과 같다.
ffmpeg -i input_video.mkv -map 0:a:1 output_audio.mp3
-map 0:a:1
: 두 번째 오디오 트랙을 추출한다. 여기서0
은 파일을 나타내고,a
는 오디오 트랙을,1
은 두 번째 트랙을 의미한다.
5. 비디오 파일에서 오디오 제거 후 저장
비디오에서 오디오를 추출한 후, 원본 비디오에서 오디오를 제거한 상태로 비디오 파일을 다시 저장할 수 있다. 다음 명령어를 사용한다.
ffmpeg -i input_video.mp4 -an -c:v copy output_video.mp4
-an
: 비디오 파일에서 오디오를 제거한다.-c:v copy
: 비디오 코덱을 재인코딩하지 않고 원본 비디오를 그대로 복사한다.
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
-ss 00:01:00
: 추출할 시작 시간을 00:01:00으로 설정한다.-to 00:02:00
: 종료 시간을 00:02:00으로 설정한다.
또는, 종료 시간을 지정하지 않고, 시작 시간에서부터 1분간의 오디오만 추출하려면 -t
옵션을 사용한다.
ffmpeg -i input_video.mp4 -ss 00:01:00 -t 00:01:00 -q:a 0 -map a output_audio.mp3
-t 00:01:00
: 시작 시간에서 1분간 추출한다.
7. 여러 파일에서 오디오 추출
여러 비디오 파일에서 오디오를 한 번에 추출할 수 있다. 이는 배치 처리를 통해 가능하며, 스크립트를 작성하여 다수의 파일을 처리하는 방식으로 진행된다.
예를 들어, 모든 .mp4
파일에서 오디오를 추출하려면 다음과 같은 스크립트를 사용할 수 있다.
Bash 스크립트 예시 (Linux/MacOS)
for file in *.mp4; do
ffmpeg -i "$file" -q:a 0 -map a "${file%.mp4}.mp3"
done
*.mp4
: 현재 디렉토리의 모든.mp4
파일을 대상으로 처리한다.${file%.mp4}
: 파일명에서 확장자.mp4
를 제거하고, 그 뒤에.mp3
확장자를 추가하여 저장한다.
8. 여러 트랙의 오디오 추출
비디오 파일에 여러 오디오 트랙이 포함된 경우, 각 트랙을 따로 추출할 수 있다. 아래는 두 개의 오디오 트랙이 포함된 비디오 파일에서 두 트랙을 각각 추출하는 예시이다.
ffmpeg -i input_video.mkv -map 0:a:0 output_audio1.mp3 -map 0:a:1 output_audio2.mp3
-map 0:a:0
: 첫 번째 오디오 트랙을 추출한다.-map 0:a:1
: 두 번째 오디오 트랙을 추출한다.
이와 같이 각 트랙을 원하는 파일로 저장할 수 있다.
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
-filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[out]"
: 두 오디오 스트림을 병합한다.n=2
는 두 개의 입력 파일을 병합한다는 의미이다.
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
-itsoffset 00:00:01
: 두 번째 오디오 트랙에 1초의 시간 오프셋을 적용한다.
이를 통해 두 트랙 간의 동기화 문제를 해결할 수 있다.