![ffmpeg: adjunte varios códecs a varios flujos de salida de filtergraph: ¿cómo?](https://rvso.com/image/1654752/ffmpeg%3A%20adjunte%20varios%20c%C3%B3decs%20a%20varios%20flujos%20de%20salida%20de%20filtergraph%3A%20%C2%BFc%C3%B3mo%3F.png)
Tengo 2 salidas de audio ffmpeg asignadas desde un gráfico de filtro, de la siguiente manera:
-filter_complex "[0:1]..bla-bla-bla..[ac3];[0:2]..bla-bla-bla..[dts]" -map "[dts]" -map "[ac3]"
A continuación, necesito codificar las 2 transmisiones de audio. Tiene que haber una manera de especificar qué códec usar para cada transmisión, ¿no? Algo como esto:
-codec:[dts] dts -codec:[ac3] ac3
No. Eso provoca un "especificador de flujo no válido". Y todos los ejemplos que he encontrado muestran únicamente un stream_specifier que se refiere a un flujo de entrada, no a un flujo de gráfico de filtro.
Lo que he probado:
-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
También probé todas las variaciones con comillas (por ejemplo, -codec:"[dts]")
Todos ellos provocan un "especificador de flujo no válido". ¿Hay alguna idea?
Respuesta1
Debe utilizar el índice de secuencia de la secuencia asignada entre las secuencias de salida.
El índice está determinado por el orden de los mapas.
En -map "[dts]" -map "[ac3]" -codec:dts dts -codec:ac3 ac3
,
[ac3]
está el segundo mapeo por lo que su códec se asigna usando -c:1 ac3
o -c:a:1 ac3
.
Si los mapas fueran -map 0:v:1 -map "[dts]" -map 0:s:0 -map "[ac3]"
,
entonces sería -c:3 ac3
o-c:a:1 ac3
Respuesta2
Una forma bastante infalible es configurar los códecs por tipo de transmisión:
-c:a CODEC
configurará el códec para todas las transmisiones de audio
Agregar un parámetro posicional posteriormente le permite especificar diferentes transmisiones sin tener que contar todas las transmisiones de otros tipos:
-c:a:0 CODEC
configurará el códec para elprimer audioarroyo
-c:a:1 CODEC
configurará el códec para elsegundo audioarroyo
-c:a:2 CODEC
configurará el códec para eltercer audiotransmitir y así sucesivamente.
-c:v:0
funcionará de manera similar para transmisiones de video.