2017-01-30 4 views
1

J'ai besoin d'un moyen d'obtenir les codes de langue à partir de fichiers MKV qui ont plusieurs pistes audio.Quelle est la manière la plus élégante d'obtenir les codes de langue d'un fichier MKV avec plusieurs pistes audio?

ffmpeg produit la sortie que je pourrais alors filtrer en utilisant des expressions régulières, mais il ne semble pas très élégant:

$ ffmpeg -i file.mkv 2>&1 | grep Audio 
Stream #0:1(eng): Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s (default) 
Stream #0:2(nar): Audio: mp2, 48000 Hz, mono, s16, 64 kb/s (default) 

mediainfo a la capacité d'extraire des informations de langue, mais dans des fichiers avec plusieurs pistes, il concaténer les codes en une seule chaîne:

$ mediainfo file.mkv --inform="Audio;%Language%" 
ennar 

est-il un outil ou une commande qui renvoie les codes de langue pour plusieurs pistes dans une manière plus agréable, ou un outil qui me permet d'indiquer un numéro de piste un nd renvoie le code de langue pour cette piste uniquement?

Répondre

0

L'exécution de cette commande ffprobe

ffprobe in.mp4 -show_entries stream=index:stream_tags=language -select_streams a -v 0 -of compact=p=0:nk=1 

produira cette sortie

1|eng 
2|deu 
3|eng 
4|eng 
5|fre 

Lorsque le premier champ est l'indice de flux absolu à-dire en comptant tous les types V/A/S et est de 0 à base.

ffprobe in.mp4 -show_entries stream=index:stream_tags=language -select_streams a:2 -v 0 -of compact=p=0:nk=1 

affichera uniquement le troisième flux audio.

ffprobe in.mp4 -show_entries stream=index:stream_tags=language -select_streams 2 -v 0 -of compact=p=0:nk=1 

affichera uniquement le troisième flux, quel que soit son type.

+0

Merci! Est-il possible de spécifier le numéro de piste et de recevoir le code de langue pour cette piste? – WackGet

+0

Juste vu le commentaire ci-dessus. Oui, '-select_streams a: 2' pour le 3ème flux audio, ou' -select_streams 5' pour le 6ème flux (quel que soit le type) – Mulvya