샤나인코더로 두 개 이상의 오디오 트랙이 들어간 동영상을 인코딩하는 방법입니다.
관련 질문글에 댓글로 설명했지만 좀 더 쉽게 따라할 수 있도록 풀어서 씁니다.
[예제 영상]
비디오 스트림 1개
오디오 스트림 3개
- 첫 번째 오디오: 일본어, FLAC, 6채널, 48.0 kHz
- 두 번째 오디오: 일본어, FLAC, 스테레오, 48.0 kHz
- 세 번째 오디오: 한국어, AAC, 스테레오, 44.1 kHz
세 개의 오디오 트랙(스트림) 중에서 첫 번째 오디오와 세 번째 오디오만 선택해서 재인코딩하는 경우 아래와 같은 단계로 작업을 진행합니다.
1단계 원본에서 원하는 오디오 스트림들을 선택
1) 파일 목록에서 해당 파일을 오른쪽 클릭 ⇒ 비디오/오디오 스트림 선택
2) 오디오 스트림 부분에서 원하는 오디오 스트림을 추가 (default 트랙인 첫 번째 오디오는 자동적으로 추가돼 있습니다)
이때 오른쪽에 나타나는 0:1, 0:3은 첫 번째 입력 파일(0)의 두 번째 스트림(1), 첫 번째 입력 파일(0)의 네 번째 스트림(3)이라는 의미입니다. (0부터 카운트됨. 비디오는 당연히 첫 번째 스트림)
2단계 빠른 설정(F6)에서 인코딩 설정 & 메타정보 추가
1) 빠른 설정(F6) 창을 열어 인코딩 설정을 합니다.
① 비디오와 오디오 코덱이 H.264, HEVC, AAC, MP3인 경우엔 파일 형식을 mp4로 해도 무방하나 AC3, flac, opus 등 다양한 오디오 코덱들도 포함시키려면 mkv 형식으로 할 것을 권장합니다.
② 샘플 레이트 변경을 체크하지 마시기 바랍니다. (aresample 필터 적용 방지)
2) F8을 눌러 매개변수 창을 연 뒤 두 개의 오디오에 맞는 메타정보를 다음과 같이 추가해 줍니다. (하지 않아도 인코딩에는 지장이 없음.)
-metadata:s:v:0 language=jpn -metadata:s:a:0 language=jpn -metadata:s:a:1 language=kor
-disposition:a:0 default
- 첫 줄은 비디오 스트림 언어를 일본어로, 인코딩될 첫 번째 오디오 스트림 언어를 일본어, 두 번째 오디오 스트림 언어를 한국어로 설정하는 메타정보 명령줄
- 둘째 줄은 첫 번째 오디오 스트림을 default 오디오로 설정하는 명령줄
<메타정보 추가 전>
<메타정보 추가 후>
3) 인코딩을 진행합니다.
주의 빠른 설정을 통해 오디오 인코딩 설정을 하면 모든 오디오 스트림에 동일한 설정이 적용됩니다.
여기까지 해도 두 개의 오디오 트랙을 가진 동영상 인코딩이 가능하지만, 각각의 오디오 스트림에 다른 설정을 적용하려면 다음의 3단계 작업을 진행해야 합니다.
3단계 매개변수 창에서 각각의 오디오에 다른 인코딩 설정
1) 매개변수 창(F8)의 인코딩 설정 부분에서 오디오 인코딩에 관한 다음의 설정 부분을 복사합니다.
-c:a libfdk_aac -ac 2 -b:a 96k -fdkprofile he
2) 똑같은 줄을 바로 밑에 하나 더 만든 뒤 위와 아래에 각각 :0, :1의 스트림 지정자(stream specifier)를 적용 (채널 수 옵션 -ac는 :a를 앞에 추가해야 함)
-c:a:0 libfdk_aac -ac:a:0 2 -b:a:0 96k -fdkprofile he
-c:a:1 libfdk_aac -ac:a:1 2 -b:a:1 96k -fdkprofile he
3) 두 번째 스트림을 위한 인코딩 옵션인 두 번째 줄을 적절하게 변경 (코덱, 채널 수, 비트레이트 순이고, -fdkprofile he는 HE-AAC 코덱의 경우에만 필요함)
-c:a:0 libfdk_aac -ac:a:0 2 -b:a:0 96k -fdkprofile he
-c:a:1 libmp3lame -ac:a:1 2 -b:a:1 128k
※ mkv 형식에서 선택 가능한 오디오 코덱은 libfdk_aac(AAC 인코더), libmp3lame(MP3 인코더), libopus(OPUS 인코더), 비트레이트를 설정할 수 없는 무손실 코덱인 flac(FLAC 인코더) 등이 있습니다.
※ 재인코딩이 아닌 스트림 복사를 원한다면 copy를 사용하면 됩니다. 예를 들어 첫 번째 오디오는 설정대로 재인코딩하되 두 번째 오디오는 스트림 복사하기 원한다면,
-c:a:0 libfdk_aac -ac:a:0 2 -b:a:0 96k -fdkprofile he
-c:a:1 copy
4) 매개변수 창의 인코딩 설정 부분에서 위의 오디오 인코딩 설정을 기존의 오디오 인코딩 줄에 덮어씁니다.
5) 확인 후 인코딩 진행
주의 이렇게 매개변수 창에서 스트림 지정자를 통해 개별적으로 오디오 인코딩 설정을 한 후, 빠른 설정에서 다시 오디오 인코딩 설정을 변경하면 스트림 지정자가 붙지 않은 오디오 인코딩 설정 명령줄이 추가되니 반드시 해당 명령줄을 매개변수 창에서 다시 편집/삭제하는 것을 잊지 마시기 바랍니다.
참고 스트림 매핑과 스트림 지정자의 활용에 대해 좀 더 알기 원하는 분은 FFmpeg 명령어 구조와 샤나인코더 작동 방식 이해와 FFmpeg 문서의 stream selection, stream specifiers 부분을 참고하시기 바랍니다.