logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 24-01-2023 13:52:51

Anonyme
Invité

Arriver à isoler deux infos

Bonjour,

par la commande :

ffprobe "Video.mp4" 2>&1




ffprobe version n5.1.2 Copyright (c) 2007-2022 the FFmpeg developers
  built with gcc 12.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-version3 --enable-vulkan
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '10-COLORADO_DVD3.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    title           : COLORADO_DVD3
    encoder         : Lavf57.56.100
  Duration: 00:48:47.48, start: 0.000000, bitrate: 10197 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 720x576 [SAR 16:15 DAR 4:3], 10000 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](fra): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 192 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
    Side data:
      audio service type: main

 



j'ai une ligne qui m'interresse avec deux valeurs.

  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 720x576 [SAR 16:15 DAR 4:3], 10000 kb/s, 25 fps, 25 tbr, 12800 tbn (default)



16:15


transformée en 16/15

4:3


On garde



Je voudrais isoler ces deux infos séparées par deux commandes distinctes.

Merci par avance

Dernière modification par Anonyme (24-01-2023 13:53:25)

#2 24-01-2023 14:37:40

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Arriver à isoler deux infos

Pour préparer le terrain, cette commande awk isole la partie du retour qui t’intéresse :

ffprobe "Video.mp4" 2>&1 | awk --field-separator '[\\[\\]]' '/Stream #0.0/ {print $4}'

SAR 16:15 DAR 4:3


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#3 24-01-2023 14:54:35

Papadakis
Membre
Lieu : Far ouest environ
Distrib. : Bookworm
Noyau : Linux 6.1.0-9-amd64
(G)UI : xfce 4.18
Inscription : 23-04-2014

Re : Arriver à isoler deux infos

Salut,

on doit pas avoir le même awk :

ffprobe MaSuperVideo.mp4 2>&1 | awk --field-separator '[\\[\\]]' 'Stream #0.0/ {print $4}'


awk: not an option: --field-separator


Le désordre, c'est l'ordre, moins le pouvoir.

Hors ligne

#4 24-01-2023 15:21:50

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Arriver à isoler deux infos

Hello,

Inspiré par vv222,
je propose cette commande qui retourne les données telles que le demande Anonyme.

ffprobe "Video.mp4" 2>&1  | awk  '/Stream #0:0/ {sub(/:/,"/",$12); sub(/],/,"",$14);print $12" "$14}'


16/15 4:3



Pour avoir ces 2 valeurs dans des variables distinctes, je te conseille de passer par un tableau :

$ read -ra Tab < <(ffprobe "Video.mp4" 2>&1  | awk  '/Stream #0:0/ {sub(/:/,"/",$12); sub(/],/,"",$14);print $12" "$14}')
$ echo "${Tab[0]}"
16/15
$ echo "${Tab[1]}"
4:3
$


Edit: ou

readarray -t Tab < <(ffprobe "Video.mp4" 2>&1  | awk  '/Stream #0:0/ {sub(/:/,"/",$12); sub(/],/,"",$14);printf("%s\n%s",$12,$14)}')




Edit2:
Arff, c'est pas bon.
Car selon le fichier vidéo, les arguments ne sont placés à la même place.
Ceci est plus costaud (car même la proposition de vv222 peut avoir des ratés) :

ffprobe "Video.mp4" 2>&1 | awk '/Stream.*SAR /{gsub(/.*[^\[]\[SAR/,""); gsub(/\].*$/,""); sub(/:/,"/",$1); print $1"\n"$3}'


Mais il faut gawk installé (apt install gawk).

Dernière modification par Tawal (24-01-2023 15:56:42)


Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#5 24-01-2023 16:48:19

Anonyme
Invité

Re : Arriver à isoler deux infos

Bonsoir à tous

Merci pour l'aide

@Tawal

et oui, les infos ne sont pas toujours au même endroit smile

Je désirais mieux deux commandes:

une pour 16/15

ffprobe "Video.mp4" 2>&1 | awk '/Stream.*SAR ......



et une pour 4:3

ffprobe "Video.mp4" 2>&1 | awk '/Stream.*DAR .....

Dernière modification par Anonyme (24-01-2023 16:50:34)

#6 24-01-2023 17:03:31

Tawal
Membre
Distrib. : Debian Stable à jour
Noyau : amd64
(G)UI : Xfce
Inscription : 25-02-2021

Re : Arriver à isoler deux infos

Pourquoi 2 commandes ?
Tu n'utilises pas les résultats dans les mêmes script.
Je t'ai montré comment "parser" le résultat d'une commande dans un tableau.
Ce n'est pas suffisant ?
Un seul appel à ffprobe et awk/gawk = moins de ressources.

Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#7 24-01-2023 19:17:32

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Arriver à isoler deux infos

sinon avec mediainfo

mediainfo --Inform="Video;%DisplayAspectRatio%" video.mp4


1.778



mediainfo --Inform="Video;%DisplayAspectRatio/String%" video.mp4


16:9


Pour un affichage personnalisé il faudra créer un fichier texte pour un affichage complexe
exemple syntaxe

mediainfo.txt

General;"%CompleteName%"
Audio;"%BitRate/String%"
File_End;\r\n

\n est le retour à la ligne, voir man echo pour les options possible
\r pour retour chariot
on utilise se fichier texte comme information sur les données à afficher

mediainfo  --Inform=file:///home/stephane/mediainfo.txt ~/Musique/JacquesBrel-Vesoul.ogg

on pourra avoir une liste complète d'un répertoire et de ses sous répertoire (le chemin devra être entouré de guillemet en cas d'espace dans les noms, entouré de guillemet simple suffit)
|less pour une consultation plus aisé
mediainfo  --Inform=file:///home/stephane/mediainfo.txt ~/Musique/|less

Pour connaitre la liste des paramètres valide pouvant être affiché
mediainfo --Info-Parameters
(résultat long pouvant etre affiner avec grep)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#8 25-01-2023 13:23:28

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Arriver à isoler deux infos

Papadakis a écrit :

on doit pas avoir le même awk :

ffprobe MaSuperVideo.mp4 2>&1 | awk --field-separator '[\\[\\]]' 'Stream #0.0/ {print $4}'


awk: not an option: --field-separator



Tu peux essayer avec -F au lieu de --field-separator.


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

Pied de page des forums