ffmpeg: 다양한 필터 그래프 출력 스트림에 다양한 코덱을 연결합니다. -- 어떻게?

ffmpeg: 다양한 필터 그래프 출력 스트림에 다양한 코덱을 연결합니다. -- 어떻게?

필터 그래프에서 매핑된 2개의 ffmpeg 오디오 출력이 있습니다.

-filter_complex "[0:1]..bla-bla-bla..[ac3];[0:2]..bla-bla-bla..[dts]" -map "[dts]" -map "[ac3]"

다음으로 2개의 오디오 스트림을 인코딩해야 합니다. 각 스트림에 사용할 코덱을 지정하는 방법이 있어야 합니다. 그렇죠? 이 같은:

-codec:[dts] dts -codec:[ac3] ac3

아니요. 이는 "잘못된 스트림 지정자"를 유발합니다. 그리고 내가 찾은 모든 예제는 필터 그래프 스트림이 아닌 입력 스트림을 참조하는 stream_specifier만을 보여줍니다.

내가 시도한 것:

-filter_complex "[0:1]..[ac3];[0:2]..[dts]" -map "[dts]" -map "[ac3]" -codec:dts dts -codec:ac3 ac3

-filter_complex "[0:1]..[ac3];[0:2]..[dts]" -map "[dts]" -map "[ac3]" -codec:[dts] dts -codec:[ac3] ac3

-filter_complex "[0:1]..[ac3];[0:2]..[dts]" -map "[dts]" -map "[ac3]" -codec:a:dts dts -codec:a:ac3 ac3

-filter_complex "[0:1]..[ac3];[0:2]..[dts]" -map "[dts]" -map "[ac3]" -codec:a:[dts] dts -codec:a:[ac3] ac3

-filter_complex "[0:1]..[ac3];[0:2]..[dts]" -map "[dts]" -map "[ac3]" -codec:[a:dts] dts -codec:[a:ac3] ac3

또한 따옴표를 사용하여 모든 변형을 시도했습니다(예: -codec:"[dts]").

이들 모두는 "잘못된 스트림 지정자"를 유발합니다. 어떤 아이디어가 있나요?

답변1

출력 스트림 중 매핑된 스트림의 스트림 인덱스를 사용해야 합니다.
인덱스는 맵의 순서에 따라 결정됩니다.

에서는 2번째 매핑 -map "[dts]" -map "[ac3]" -codec:dts dts -codec:ac3 ac3이므로 또는 를
[ac3]사용하여 해당 코덱을 할당합니다 .-c:1 ac3-c:a:1 ac3

지도가 라면 -map 0:v:1 -map "[dts]" -map 0:s:0 -map "[ac3]"그것은
또는 가 될 것입니다 -c:3 ac3.-c:a:1 ac3

답변2

가장 확실한 방법은 스트림 유형별로 코덱을 설정하는 것입니다. -c:a CODEC모든 오디오 스트림에 대한 코덱을 설정합니다.

나중에 위치 매개변수를 추가하면 다른 유형의 모든 스트림을 계산할 필요 없이 다양한 스트림에 대해 지정할 수 있습니다.

-c:a:0 CODEC코덱을 설정해보겠습니다.첫 번째 오디오개울

-c:a:1 CODEC코덱을 설정해보겠습니다.두 번째 오디오개울

-c:a:2 CODEC코덱을 설정해보겠습니다.세 번째 오디오스트림 등등.

-c:v:0비디오 스트림에서도 비슷하게 작동합니다.

관련 정보