![ffmpeg: 다양한 필터 그래프 출력 스트림에 다양한 코덱을 연결합니다. -- 어떻게?](https://rvso.com/image/1654752/ffmpeg%3A%20%EB%8B%A4%EC%96%91%ED%95%9C%20%ED%95%84%ED%84%B0%20%EA%B7%B8%EB%9E%98%ED%94%84%20%EC%B6%9C%EB%A0%A5%20%EC%8A%A4%ED%8A%B8%EB%A6%BC%EC%97%90%20%EB%8B%A4%EC%96%91%ED%95%9C%20%EC%BD%94%EB%8D%B1%EC%9D%84%20%EC%97%B0%EA%B2%B0%ED%95%A9%EB%8B%88%EB%8B%A4.%20--%20%EC%96%B4%EB%96%BB%EA%B2%8C%3F.png)
필터 그래프에서 매핑된 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
비디오 스트림에서도 비슷하게 작동합니다.