Bonjour, d'habitude je ne post jamais sur des forums, je les parcours pour trouver une solution mais la je ne trouve rien pour éclairer ce que je veux faire..
J'ai des fichiers mkv qui contiennent des multipistes, et j'aimerais via un script qu'il m'affiche certaine informations, j'ai essayer mediainfo, ffprobe, etc mais je trouve pas ou sais pas comment le coder et quand je voit du sed et awk je prend peur x)
Le resultat attendu serait :
Audio : 1 French AC3 384 6 channels
2 Spanish AAC 128 2 channels
3 Russian DTS 768 6 channels
Subs : 1 French
2 French French Forced
Et il faudrait aussi pouvoir géré le fais que French peux y avoir un track d'Audiodescription au quel cas le titre de la piste son et nomer "Audiodescription" idem pour les French Forced (mais ça y a l'option Forced Yes de la documentation)
Ce que je n'arrive pas a faire c'est avoir les infos des pistes qui les range par ordre et qui arrive a prendre les infos sans que j'ai a faire des cut -f15 enfin faire une variable pour chaque piste audio potentiel sinon mediainfo peux avoir un xml si plus simple, ou sinon le parser mais je suis pas du tout doué dans ce domaine.
Merci beaucoup pour vos reponses !
# j'ai pas cherché loin
Posté par NeoX . Évalué à 4.
http://lmgtfy.com/?q=extract+file+info+from+mkv
ca m'envoie par exemple sur l'outil mkvinfo qui semble etre l'outil qui fait ce que tu veux (j'ai pas testé, j'ai pas de MKV)
ensuite en effet, si ca sort un gros paté, ben il faut jouer de grep, sed, awk pour filtrer les infos utiles, reformater la sortie.
sinon avec mediainfo,
mediainfo --fullscan input.mkv.
qui nous sort un truc comme ca
avec un simple
egrep
apres mediainfo on peut avec un truc comme ca[^] # Re: j'ai pas cherché loin
Posté par Arturia . Évalué à 1.
J'ai fais quelque test via la doc de mediainfo :
audio=$(mediainfo --Inform="General;%Audio_Language_List%" $1 | sed 's/\///')
audio_bitrate=$(mediainfo --Inform="Audio;%BitRate/String%" $1 | sed 's/s/s /')
audio_codec=$(mediainfo "--Inform=General;%Audio_Codec_List%" $1 | sed 's/\///')
audio_channels=$(mediainfo "--Inform=Audio;%Channel(s)/String%" $1 | sed 's/s/s /')
Les variables contiennent :
French English
192 Kbps 128 Kbps
AC3 AC3
2 channels 2 channels
J'aimerais les faire s'afficher comme ça :
French AC3 192 Kbps 2 channels
English AC3 128 Kbps 2 channels
et le faire tourné dans une boucle ou nTrack est le nombre de pistes présente (ex = 2)
PS : problème quand codec rend AAC LC AC3 faudrait supprimer le LC et si AAC affecté par défaut un débit de 160 vue que les AAC n'affiche pas le bitrate
[^] # Re: j'ai pas cherché loin
Posté par NeoX . Évalué à 2.
c'est deja un bon debut,
tu as donc autant de colonne que de piste.
suffit alors de faire un
awk '{print $1}' fichier.txt
pour n'afficher que la premier colonne.pipe ca dans un sed pour enlever les retours à la ligne, et tu devrais obtenir
French AC3 192 2
donc le script d'avant, si tu remplaces les espaces par des _
tu aurais alors
French English
192_Kbps 128_Kbps
AC3 AC2
2_Channels 2_Channels
le awk print $1 donnera alors
French 192_Kbps AC3 2_Channels
si tu fais un awk '{print $2}' fichier.txt
tu recupere les 2e colonnes
tu supprimes les retour à la ligne :
English 128_Kbps AC3 2_Channels
[^] # Re: j'ai pas cherché loin
Posté par Arturia . Évalué à 1.
French English
192_Kbps 128_Kbps
AC3_/ AC3
2_channel 2_channels
French French
Sourds_&_Malentendants
NoNo
Sauf que audio_codec=$(mediainfo "--Inform=General;%Audio_Codec_List%" $1 | | sed 's/ /_/')
affiche : AC3_/ AC3 mais sa marche quand AAC : AAC_LC / AC3
autre problème si AAC le bitrate = 384_Kbps car AAC pas de débit renseigné
Pour les sous titres idem, French mais celui ci n'a pas de Titre, j'ai pas moyen de savoir qui y a rien,
et pour Savoir si le sous titres est forced je sais pas comment séparer ne YesYes ou YesNo NoYes NoNo et tout les autres cas possibles, je test le awk la :)
[^] # Re: j'ai pas cherché loin
Posté par Zenitram (site web personnel) . Évalué à 2.
Magie noire (plus ou moins, vu que tu avais l'idée) :
mediainfo "--Inform=Audio;%Language/String% %Format% %BitRate/String% %Channel(s)/String%\n" %1
(et ça a l'avantage de parser le fichier qu'une fois)
[^] # Re: j'ai pas cherché loin
Posté par Zenitram (site web personnel) . Évalué à 2.
Heureux d'apprendre qu'il y a de la doc de mediainfo.
Question idiote : où?
[^] # Re: j'ai pas cherché loin
Posté par Arturia . Évalué à 1. Dernière modification le 15 août 2015 à 11:37.
J ai finalement changer d'outil et réalisé ce que je voulez via ffprobe avec du json et en utilisant des boucles pour n éléments de pistes et sa marche a merveille :D
Je vous remercie de votre aide :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.