ffmpeg 매핑 도움말, 1개의 6ch 오디오를 멀티 트랙으로 인코딩

ffmpeg 매핑 도움말, 1개의 6ch 오디오를 멀티 트랙으로 인코딩

2개의 입력 파일이 있습니다.

  • cover.jpg
  • audio.dts(6채널)

내 대상 파일은 1개의 비디오와 3개의 오디오가 포함된 mp4입니다.

  • 오디오 1은 2채널 aac입니다.
  • 오디오 2는 6채널 ac3입니다.
  • 오디오 3은 6채널 DTS입니다.

내가 시도한 명령은 다음과 같습니다. 오디오 다중 채널을 사용하여 그림 이미지를 비디오로:

ffmpeg -loop 1 -i cover.jpg -i audio.dts \
-map 0:0 -map 1:0 -map 1:0 -map 1:0 \
-f mp4 \
-codec:v:0 libx264 -r:0 1 -profile:v:0 main -level 3.1 -pix_fmt:0 yuv420p -qmax:0 19 -qmin:0 18 \
-codec:a:0 libfaac -ac:0 2 -ar:0 44100 -q:a:0 640 -af:0 "pan=stereo| FL = FL + 0.5*FC + 1.0*BL + 1.0*SL + 0.8*LFE | FR = FR + 0.5*FC + 1.0*BR + 1.0*SR + 0.8*LFE" \
-codec:a:1 ac3 -ac:1 6 -ab:a:1 640 \
-codec:a:2 copy \
-threads 0 -y \
-shortest -t 00:00:39.000 out.mp4

하지만 오디오 #1에 적용한 오디오 옵션이 오디오 #2와 오디오 #3에도 적용된 것 같습니다.

해당 옵션을 하나의 트랙에만 적용하려면 어떻게 해야 합니까?

답변1

언제나 그렇듯이 FFmpeg 내에서 이와 같은 작업을 수행하는 방법은 여러 가지가 있습니다.

제가 가장 잘 알고 있는 방법은 channelsplit필터를 사용하여 오디오 스트림을 분리하고 각 스트림에 대한 레이블을 정의하는 것입니다. 이렇게 하면 채널 중 하나에 개별적으로 다양한 필터를 수행하고 원하는 채널 조합을 포함하도록 출력을 매핑할 수 있습니다.

필터는 다음과 같습니다.

ffmpeg -i [INPUT_video] -i [INPUT_3channel_audio] -filter_complex "[1:a]channelsplit[1][2][3];...."

[1] [2]이 예에서는 3개 채널을 각각 새 라벨 및 로 분할했습니다 [3]. 이제 이러한 레이블을 나중에 호출하고 다른 필터를 통해 푸시하거나 최종 출력에 매핑할 수 있습니다.

도움이 되었기를 바랍니다!

관련 정보