1 votes

ffmpeg : Attacher divers codecs à divers flux de sortie de filtregraph -- Comment ?

J'ai 2 sorties audio ffmpeg mappées à partir d'un graphique de filtre, comme suit :

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

Ensuite, je dois encoder les 2 flux audio. Il doit y avoir un moyen de spécifier quel codec utiliser pour chaque flux, non ? Quelque chose comme ça :

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

Nope. Cela provoque le message "Invalid stream specifier". Et tous les exemples que j'ai trouvés montrent uniquement un stream_specifier qui se réfère à un flux d'entrée, pas à un flux de graphique de filtre.

Ce que j'ai essayé :

-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

J'ai également essayé toutes les variantes avec des guillemets (par exemple -codec : "[dts]")

Toutes provoquent le message "Invalid stream specifier". Y a-t-il des idées ?

0voto

Gyan Points 29437

Vous devez utiliser l'index du flux mappé parmi les flux de sortie.
L'indice est déterminé par l'ordre des cartes.

Sur -map "[dts]" -map "[ac3]" -codec:dts dts -codec:ac3 ac3 ,
[ac3] est le deuxième mappage, son codec est donc assigné en utilisant la fonction -c:1 ac3 o -c:a:1 ac3 .

Si les cartes étaient -map 0:v:1 -map "[dts]" -map 0:s:0 -map "[ac3]" ,
alors ce serait -c:3 ac3 o -c:a:1 ac3

0voto

Malte Points 36

Une méthode assez sûre consiste à définir les codecs par type de flux : -c:a CODEC va définir le codec pour tous les flux audio

L'ajout d'un paramètre positionnel vous permet ensuite de spécifier différents flux sans avoir à compter tous les flux d'autres types :

-c:a:0 CODEC définira le codec pour le premier audio flux

-c:a:1 CODEC définira le codec pour le seconde audio flux

-c:a:2 CODEC définira le codec pour le troisième audio flux et ainsi de suite.

-c:v:0 fonctionnera de la même manière pour les flux vidéo.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X