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]
. 이제 이러한 레이블을 나중에 호출하고 다른 필터를 통해 푸시하거나 최종 출력에 매핑할 수 있습니다.
도움이 되었기를 바랍니다!