동영상 또는 오디오 파일의 오디오에서 원하는 채널만 선택해서 인코딩하는 법을 소개합니다.
FFmpeg의 -map_channel 옵션을 이용해 이런 작업을 할 수 있지만 FFmpeg 도움말 문서에 소개된 옵션 설명이 좀 어려울 것 같아 샤나인코더로 이를 어떻게 적용할 수 있는지 예를 들어 설명하겠습니다.
[예제 영상]
비디오 스트림 2개(메인 비디오와 커버 이미지)
오디오 스트림 1개(스테레오 = 2채널)
스테레오 오디오에서 왼쪽 채널(L)만 뽑아내서 모노 오디오로 인코딩하기. (비디오는 메인 비디오 원본 그대로)
1. 스트림 지정자와 채널 ID 알아내기
스트림 지정자란 동영상 파일 안의 스트림들(비디오 스트림, 오디오 스트림, 자막 스트림 등)이 갖고 있는 고유 인식 번호라고 생각하시면 됩니다. 각 스트림이 파일 안에 나열된 순서에 따라 0부터 시작한 번호를 갖게 됩니다.
이와 비슷하게, 채널 ID는 하나의 오디오 스트림 안에 채널들(좌, 우, 중앙 등)이 갖고 있는 고유 인식 번호입니다. 이것 역시 나열되는 순서에 따라 0부터 시작한 번호를 갖게 됩니다.
이 정보를 알아야 하는 이유는 -map_channel 옵션을 사용하려면 반드시 이 정보들을 입력해야 하기 때문입니다.
1) 스트림 지정자
목록에서 파일을 오른쪽 클릭 ⇒ [비디오/오디오 스트림 선택]으로 원하는 채널이 있는 오디오 스트림의 지정자를 알아냅니다.
위의 스크린샷에서 보듯 원하는 오디오 스트림의 스트림 지정자는 0:1이 됩니다. 이는 해당 오디오 스트림이 첫 번째(0) input 동영상의 두 번째(1) 스트림이라는 뜻입니다. (첫 번째 스트림은 메인 비디오)
2) 채널 ID
목록에서 파일을 오른쪽 클릭 ⇒ [파일 정보] 창을 띄운 후 오디오 부분의 Channel Layout에서 왼쪽(L) 채널의 위치를 찾아냅니다.
스크린샷에서 볼 수 있듯 우리가 원하는 왼쪽(L) 채널은 ID가 0이라는 것을 알 수 있습니다.
2. 빠른 설정
빠른 설정 창을 띄워 다음과 같이 설정합니다.
주의할 점은 아래와 같습니다.
- 파일 형식(컨테이너 양식)은 가급적 원본과 동일하게 합니다. 만일 코덱을 다르게 선택할 경우 범용성이 높은 mkv를 선택하실 것을 추천합니다.
- 비디오 재인코딩을 원하지 않는다면 스트림 복사, 재인코딩을 원한다면 적절한 코덱을 선택하시면 됩니다.
- 오디오는 스트림 복사가 아닌 재인코딩이 필요하므로 코덱을 꼭 선택하셔야 합니다. (스트림 복사를 선택하면 채널 선택이 불가능해짐.) 가급적 원본과 같은 코덱으로 선택하십시오.
- 오디오 비트레이트는 원본 비트레이트를 전체 채널 수로 나눈 뒤 원하는 채널 수를 곱해서 나온 값을 적용하실 것을 권장합니다. (보다 높거나 낮은 값도 상관없으며, 코덱이 다를 경우 본인이 원하는 비트레이트를 선택하시면 됩니다.)
- 채널은 반드시 뽑아낼 채널(들)의 수로 선택하시기 바랍니다.
3. 매개변수 창에서 -map_channel 적용
F8을 눌러 매개변수 창을 띄운 후 1 단계에서 알아낸 스트림 지정자 0:1과 채널 ID 0을 -map_channel 옵션에 적용해 인코딩 설정 부분에 추가해 줍니다.
이때 콜론(:)을 마침표(.)로 바꾸고 스트림 지정자와 채널 ID 역시 마침표(.)로 연결합니다.
즉, 이 예제의 경우
-map_channel 0.1.0
을 추가 입력합니다. (앞에 한 칸 띄기 주의)
확인 후 인코딩을 진행하면 됩니다.
■ 여러 개의 채널을 선택할 경우
여러 개의 채널을 선택할 경우 원하는 채널들의 ID를 알아낸 뒤 [빠른 설정]이나 (빠른 설정에 없는 채널 수라면) [매개변수 창] 인코딩 설정 부분에서 원하는 채널 수를 맞춰주고, 매개변수 창 인코딩 설정 부분에서 -map_channel을 원하는 채널 수만큼 적용하면 됩니다.
예를 들어 5.1 채널의 단일 flac 오디오를 가진 mkv 파일에서 채널 레이아웃(channel layout)이 아래와 같고
왼쪽(L), 오른쪽(R), 가운데(C) 채널만 뽑아 3채널(=2.1채널) flac 오디오를 구성하고 싶다면 [매개변수 창]에서 채널 수와 -map_channel을 아래와 같이 설정하면 됩니다.
-f mkv
-c:v copy
-c:a flac -ac 3 -map_channel 0.1.0 -map_channel 0.1.1 -map_channel 0.1.2
-sn -map_metadata -1 -map_chapters -1
[빠른 설정]에 원하는 채널 수(3) 선택값이 없으므로 채널 수는 -ac 옵션으로 직접 설정합니다.
(flac은 비손실 코덱이므로 비트레이트 설정은 불가능합니다.)
오디오 스트림 지정자는 0:1이고, L, R, C는 채널 레이아웃의 배열 순서에 따라 채널 ID가 각각 0, 1, 2가 되므로 0.1.0, 0.1.1, 0.1.2를 -map_channel 옵션에 반복해서 적용해주면 됩니다.
(※ 이때 원본의 레이아웃과는 상관없이 인코딩된 영상의 오디오는 flac의 3채널 레이아웃에 적합한 2.1 레이아웃(L R LFE)을 갖게 됩니다.)
주의 서로 다른 오디오 스트림에서 채널을 뽑아 하나의 오디오 스트림으로 모으는 것은 이 방법으로는 불가능합니다. 이 경우엔 FFmpeg 도움말 문서에 소개된 대로 amerge 필터를 사용하시기 바랍니다.
6채널에서 모노채널로 인코딩할때 오디오 비트레이트를 몇을 줘야 가장 손실이 적고 음질이 좋을까요