Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/03/2023, à 22:09

iznobe

calcul bitrate pixel/frame

Bonjour , j ' ai quelques vidéos qui prennent un peu de place .
Seulement , je ne voudrais pas forcement toute les re encoder , j ' ai deja commencé , mais ne me rapelle plus toutes celle qui sont deja passées a la moulinette .

d' ou l' idée d ' une commande qui permette de calculer le bitrate , pour voir celle qui peuvent correspondre a une optimisation de place .

d' apres ce que j' ai compris , pour obtenir le bitrate pixel/frame , il faut deja connaitre la taille d ' une image de la vidéo , son bitrate , le nombre d' images /secondes ,  ainsi que le nombre d ' images de la vidéo en question ( et/ ou sa durée ) .

Si j' ai bien suivi , ensuite il suffit de faire un simple caclul :
bitrate global / nb image par secondes * 1024 ,  ce qui donne le nombre de bits pour une image .
on divise alors ce nombre par la taille de l' image :
bits par image / ( Hauteur * largeur ) de l' image et on obtient le bon indice .

reste encore a savoir comment obtenir les données pour effectuer ce calcul .

En supposant que les fichiers vidéos sont tous des .mkv , que le repertoire cible est /Vidéos , la commande suivante affiche le nom de la vidéo :

shopt -s globstar && for f in /Vidéos/**/*.mkv; do test -n "$(ffprobe -loglevel error -show_streams -select_streams v:1 "$f")" && echo "$f"; done

comment je devrais donc modifier la commande ci-dessus , afin d' obtenir :
* le bitrate de la vidéo
* le nombre d' images par secondes
* la hauteur d' une image
* la largeur d ' une image

?

Dernière modification par iznobe (Le 15/03/2023, à 22:33)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#2 Le 15/03/2023, à 22:19

Watael

Re : calcul bitrate pixel/frame

salut,

ffprobe affiche-t-il ces informations ? sous quel format ?
pour les quelques .mkv présent sur mon système, cette commande ffprobe n'affiche rien.

edit: ah! en retirant le loglevel, des informations apparaissent...

Dernière modification par Watael (Le 15/03/2023, à 22:27)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 15/03/2023, à 22:35

iznobe

Re : calcul bitrate pixel/frame

Salut watael

Watael a écrit :

edit: ah! en retirant le loglevel, des informations apparaissent...

oui , mais y en a bien trop big_smile


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#4 Le 15/03/2023, à 22:40

Watael

Re : calcul bitrate pixel/frame

par exemple :

ffprobe -hide_banner -select_streams v:1 "$taVideo" 2>&1 | grep 'Stream.*Video'

?

Dernière modification par Watael (Le 15/03/2023, à 22:48)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 15/03/2023, à 22:43

iznobe

Re : calcul bitrate pixel/frame

et je me suis planté pour le parametre v:1 , c ' est v:0 qu ' il faut , on obtient alors que les infos de la vidéo , ce que je cherchait a faire dans un 1er temps .
reste alors plus qu ' a recuperer les 4 données necessaires au calcul .

Dernière modification par iznobe (Le 15/03/2023, à 22:56)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#6 Le 15/03/2023, à 22:48

iznobe

Re : calcul bitrate pixel/frame

j ' obtiens ca si je met bien v:0 et pas v:1

Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt709), 1920x1040, SAR 1:1 DAR 24:13, 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)

on s ' approche .

fps est le nombre d' image par seconde .
1920*1040 , la hauteur et la largeur .
mais je ne vois pas le bitrate video .

Dernière modification par iznobe (Le 15/03/2023, à 22:49)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#7 Le 15/03/2023, à 22:56

Watael

Re : calcul bitrate pixel/frame

et comme ça ?

ffprobe -hide_banner -show_format -print_format csv -select_streams v "$taVideo"

ça pourrait être plus facile à traiter "programmatiquement".

et pour t'aider à identifier les colonnes, n'indique pas de format d'affichage :

ffprobe -hide_banner -show_format -select_streams v "$taVideo"

Dernière modification par Watael (Le 16/03/2023, à 22:04)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 15/03/2023, à 23:04

iznobe

Re : calcul bitrate pixel/frame

là , y a ce qu ' il faut wink

par contre pour obtenir que les 4 desirés ...


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#9 Le 15/03/2023, à 23:12

Watael

Re : calcul bitrate pixel/frame

dans la version pour laquelle le format n'est pas indiqué, tu repères l'emplacement des informations que tu veux, et tu les récupères dans le format CSV (elles seront au même endroit)
par exemple, le nombre de streams, c'est la deuxième colonne, le bit_rate, la neuvième.
soit

$ IFS=',' read -ra data < <(ffprobe ... -print_format csv ... "$taVideo")
$ echo "nbSreams = ${data[1]} , bitrate = ${data[8]}"
nbStreams = 2 , bitrate = 4370347
$

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 15/03/2023, à 23:25

iznobe

Re : calcul bitrate pixel/frame

De plus selon le container , il faut modifier la commande ...
un truc marche avec une video .mp4 , mais pas avec une .mkv par exemple ... avec ffprobe .

avec mediainfo sinon , ca fonctionne pour tous les types de vidéos :

mediainfo --Output='Video;%BitRate%' '/video.mp4'

EDIT , encore mieux , y a moyen de ne pas calculer avec mediainfo .
mais je ne sais pas quoi mettre a la place lol . bon je vais chercher et trouver .

Dernière modification par iznobe (Le 15/03/2023, à 23:36)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#11 Le 16/03/2023, à 00:14

iznobe

Re : calcul bitrate pixel/frame

pouarf , pas facile de trouver mais j' ai fini par y arriver héhé , grace a ce site : https://www.fevrierdorian.com/blog/post … e-commande.

mediainfo --Info-Parameters

renvoie la liste complete de ce qu 'on peut avoir .

alors j' ai fait :

iznobe@iznobe-PC:~$ mediainfo --Info-Parameters | grep bit
Status                    : Status of bit field (0=IsAccepted, 1=IsFilled, 2=IsUpdated, 3=IsFinished)
OverallBitRate_Minimum    : Minimum bit rate (in bps)
OverallBitRate_Minimum/St : Minimum bit rate (with measurement)
OverallBitRate_Nominal    : Nominal bit rate (in bps)
OverallBitRate_Nominal/St : Nominal bit rate (with measurement)
OverallBitRate_Maximum    : Maximum bit rate (in bps)
OverallBitRate_Maximum/St : Maximum bit rate (with measurement)
OriginalSourceForm/NumCol : Number of colors requested when digitizing (e.g. 256 for images or 32 bit RGB for video)
Status                    : bit field (0=IsAccepted, 1=IsFilled, 2=IsUpdated, 3=IsFinished)
BitRate_Encoded           : Encoded (with forced padding) bit rate in bps, if some container padding is present
BitRate_Encoded/String    : Encoded (with forced padding) bit rate (with measurement), if some container padding is present
BitDepth/String           : 16/24/32 bits
Bits-(Pixel*Frame)        : bits/(Pixel*Frame) (like Gordian Knot)
Status                    : bit field (0=IsAccepted, 1=IsFilled, 2=IsUpdated, 3=IsFinished)
BitRate_Encoded           : Encoded (with forced padding) bit rate in bps, if some container padding is present
BitRate_Encoded/String    : Encoded (with forced padding) bit rate (with measurement), if some container padding is present
BitDepth                  : Resolution in bits (8, 16, 20, 24). Note: significant bits in case the stored bit depth is different
BitDepth/String           : Resolution in bits (8, 16, 20, 24). Note: significant bits in case the stored bit depth is different
BitDepth_Detected         : Detected (during scan of the input by the muxer) resolution in bits
BitDepth_Detected/String  : Detected (during scan of the input by the muxer) resolution in bits
BitDepth_Stored           : Stored Resolution in bits (8, 16, 20, 24)
BitDepth_Stored/String    : Stored Resolution in bits (8, 16, 20, 24)
Status                    : bit field (0=IsAccepted, 1=IsFilled, 2=IsUpdated, 3=IsFinished)
BitRate_Encoded           : Encoded (with forced padding) bit rate in bps, if some container padding is present
BitRate_Encoded/String    : Encoded (with forced padding) bit rate (with measurement), if some container padding is present
Status                    : bit field (0=IsAccepted, 1=IsFilled, 2=IsUpdated, 3=IsFinished)
BitRate_Encoded           : Encoded (with forced padding) bit rate in bps, if some container padding is present
BitRate_Encoded/String    : Encoded (with forced padding) bit rate (with measurement), if some container padding is present
Status                    : bit field (0=IsAccepted, 1=IsFilled, 2=IsUpdated, 3=IsFinished)
Status                    : bit field (0=IsAccepted, 1=IsFilled, 2=IsUpdated, 3=IsFinished)
iznobe@iznobe-PC:~$ mediainfo --Output='Video;%Bits-(Pixel*Frame)%' '/Vidéos.mkv'
0.039
iznobe@iznobe-PC:~$ 

et voilou tongue reste plus qu ' a faire une boucle . mais a priori il ne supporte pas le caracter joker ...

Dernière modification par iznobe (Le 16/03/2023, à 01:03)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#12 Le 16/03/2023, à 01:03

iznobe

Re : calcul bitrate pixel/frame

j ' y ai presque cru avec media info , mais c ' est inexploitable pour recevoir par exemple le nom et le bit/pixel*frame ...
deja dans le manuel la description de la commande est fausse ,et de plus ca ne fonctionne pas :

  Display aspect ration and audio format
        $ mediainfo --Inform="file://Text.txt foo.mkv

       If Text.txt contains:

       - "Video;%DisplayAspectRatio%"
           Then the display aspect ratio is printed out.

       - "Audio;%Format%"
           Then the audio format is printed out.

en fait c ' est : :

mediainfo --Inform="file://Text.txt" "foo.mkv"

qu ' ils auraient du ecrire .
j ' ai creer une fichier mediainfo.txt et aucun des possibilités de ce qui est dit ci-dessus ne fonctionne ...
j ' ai testé meme avec les tirets devant , rien .

Dernière modification par iznobe (Le 16/03/2023, à 01:05)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#13 Le 16/03/2023, à 08:53

iznobe

Re : calcul bitrate pixel/frame

Bonjour , vu mes deboires avec mediainfo , je suis revenu a ffprobe wink
Grace a ce site qui explique bien avec beaucoup d' exemples https://ottverse.com/ffprobe-comprehens … specifiers ,  j' y suis presque :

iznobe@iznobe-PC:~$ ffprobe -v error -hide_banner -select_streams v:0 -show_entries stream=width,height,r_frame_rate -print_format default=nokey=1:noprint_wrappers=1 test.mkv
1920
1036
24/1
iznobe@iznobe-PC:~$

il me reste plus qu ' a recuperer une donnée le bitrate vidéo .

Dernière modification par iznobe (Le 16/03/2023, à 09:11)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#14 Le 16/03/2023, à 21:38

iznobe

Re : calcul bitrate pixel/frame

Bonjour , bon , ben je n' arrive pas a recuperer le bitrate vidéo via ffprobe . le manuel et la doc sont plus que fournis , mais peu de choses sur le bitrate vidéo ...
mediainfo est deplorable a l' utilisation sur une vingtaine de fichiers et pas intuitif du tout , tres difficile a faire fonctionner malheureusement et encore moins dans un script . sort ne fonctionne pas .

Bref , c' est la cata yikes


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#15 Le 16/03/2023, à 22:01

iznobe

Re : calcul bitrate pixel/frame

Watael a écrit :

dans la version pour laquelle le format n'est pas indiqué, tu repères l'emplacement des informations que tu veux, et tu les récupères dans le format CSV (elles seront au même endroit)
par exemple, le nombre de streams, c'est la deuxième colonne, le bit_rate, la neuvième.
soit

$ IFS=',' read -ra data < <(ffprobe ... -print_format csv ... "$maVideo.mkv")
$ echo "nbSreams = ${data[1]} , bitrate = ${data[8]}"
nbStreams = 2 , bitrate = 4370347
$

c ' est une possibilité , sauf que le bitrate que renvoie la colonne 9 est e bitrate " tout confondu " , pas le bitrate vidéo .

ffprobe -hide_banner -show_format "$ma_vidéo.mkv"

renvoie la meme chose .

il ya une donnée affichée correspondante :

  Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt709), 1920x1040, SAR 1:1 DAR 24:13, 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
    Metadata:
      BPS             : 1859036

il doit donc etre possible de l' affichée seule au meme titre que les autres ...

Dernière modification par iznobe (Le 16/03/2023, à 22:04)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#16 Le 16/03/2023, à 22:03

Watael

Re : calcul bitrate pixel/frame

avec la commande

$ 2>/dev/null ffprobe -hide_banner -show_format -select_streams v "$maVideo"

on voit une information bitrate, entre autres, ce n'est pas ça ?

[FORMAT]
...
bit_rate=4370347
...
[/FORMAT]

alors que -show_entries stream=bit_rate montre N/A hmm

edit:

le bitrate que renvoie la colonne 9 est e bitrate " tout confondu " , pas le bitrate vidéo .

ce qui expliquerait l'observation exposée ici.

Dernière modification par Watael (Le 16/03/2023, à 22:05)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#17 Le 16/03/2023, à 22:04

krodelabestiole

Re : calcul bitrate pixel/frame

j'ai pas trop le temps de me pencher sur ton problème immédiatement, mais on a la chance d'avoir le développeur de mediainfo présent sur notre forum : https://forum.ubuntu-fr.org/viewtopic.p … #p21810775

https://forum.ubuntu-fr.org/profile.php?id=416811

Hors ligne

#18 Le 16/03/2023, à 22:06

iznobe

Re : calcul bitrate pixel/frame

Watael a écrit :

on voit une information bitrate, entre autres, ce n'est pas ça ?

le probleme c ' est que je ne suis pas certain , tout depend du stream dans lequel l ' info est affichée .
il y a un bitrate par stream et un bitrate global .
celui dont j' ai besoin est celui du stream vidéo .
celui qui affiche "N/A" justement roll

chez moi , il est indiqué dans cette partie du retour de la commande suivante :

ffprobe -hide_banner -show_format "ma video.mkv"
Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt709), 1920x1040, SAR 1:1 DAR 24:13, 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
    Metadata:
      BPS             : 1859036
      DURATION        : 02:06:08.853000000
      NUMBER_OF_FRAMES: 181471
      NUMBER_OF_BYTES : 1758846945
      _STATISTICS_WRITING_APP: mkvmerge v74.0.0 ('You Oughta Know') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2023-03-02 05:50:20
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

il est là , si je dis pas de betise : BPS             : 1859036
dans mediainfo ( en supposant que ce qu ' il affiche soit correct ) , dans Vidéo j ' ai ca :

Bit rate :1 859 kb/s

ca m' a l ' air de bien correspondre .

je suppose que ceci doit bien vouloir dire quelquechose :

 _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

j ' ai fait des recherches sur le net avec : " ffprobe statistics tags " , mais rien hmm

Dernière modification par iznobe (Le 16/03/2023, à 22:15)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#19 Le 16/03/2023, à 22:18

krodelabestiole

Re : calcul bitrate pixel/frame

iznobe a écrit :

le probleme c ' est que je ne suis pas certain , tout depend du stream dans lequel l ' info est affichée .

check le lien que je viens de poster, à ce sujet !

Hors ligne

#20 Le 16/03/2023, à 22:32

iznobe

Re : calcul bitrate pixel/frame

krodelabestiole a écrit :

check le lien que je viens de poster, à ce sujet !

Si tu parles du 1er lien  , je viens de lire .
le bitrate avec les statistiques ( BPS ) est bien affiché dans mon cas , a la fois dans ffprobe et dans media info .

je vais voir le 2eme lien .

Ha , c ' est le profil du dev . ok .

Donc , il est possible que certains .mkv n' affiche pas de bitrate , ni de BPS ... ca va etre cool cette histoire je sens .
Va falloir que je me base peut etre sur d' autres valeurs dans ce cas , car je me sens pas de scanner tous les fichiers , et encore moins de les convertir en mp4 .
j ' ai plutot tendance a faire le contraire meme mad


Il est peut etre possible de prendre le bitrate global , d ' enlever tous les autres bitrate ( sauf le vidéo , si jamais il était affiché ) ce qui donnerait alors le bitatevidéo non ?

Dernière modification par iznobe (Le 16/03/2023, à 22:37)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#21 Le 16/03/2023, à 23:26

iznobe

Re : calcul bitrate pixel/frame

pouarf ! enfin , j ' ai fini par trouver comment faire sur la doc : https://ffmpeg.org/ffprobe-all.html ...

To show only the title tag (if available) in the stream sections:

stream_tags=title

mais je n' arrive pas a tout afficher en une seule commande .
voilà comment faire pour obtenir le bitrate vidéo ( peut etre pas dans tout les cas ) :

ffprobe -v error -select_streams v:0 -show_entries stream_tags=BPS -of default=noprint_wrappers=1 "ma_vidéo.mkv"
TAG:BPS=1859036
iznobe@iznobe-PC:~$ 

et pour afficher uniquement la valeur :

ffprobe -v error -select_streams v:0 -show_entries stream_tags=BPS -of default=noprint_wrappers=1:nokey=1"ma_vidéo.mkv"

la commande qui affiche tout comme il faut , mais evidemment , tout a l' envers big_smile :

ffprobe -v error -select_streams v:0 -show_entries stream_tags=BPS,stream:stream=avg_frame_rate,width,height -of default=noprint_wrappers=1:nokey=1 "ma_vidéo.mkv"

Apres avoir ecrit la commande dans l ' autre sens ( mad ) , c ' est enfin d' aplomb :

iznobe@iznobe-PC:~$ ffprobe -v error -select_streams v:0 -show_entries stream=height,width,avg_frame_rate,stream_tags:stream_tags=BPS -of default=noprint_wrappers=1:nokey=1 "ma_vidéo.mkv"
1920
1040
24000/1001
1859036
iznobe@iznobe-PC:~$

Dernière modification par iznobe (Le 16/03/2023, à 23:49)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#22 Le 17/03/2023, à 00:31

iznobe

Re : calcul bitrate pixel/frame

ok , bon , j ' abandonne sad
la plupart des fichiers .mkv n ' ont pas le tag BPS . je ne vais meme pas voir plus loin si ils sont un bit(_)rate ou pas .
car y a de grandes chances qu ' il n' aient pas de bitrate non plus .
ensuite , faut scripter tout cas , j' avais commencer , mais bon , vu les retours de commande , je vais passer 15 jours a chercher partout .

shopt -s globstar && for f in /Vidéos/**/*.mkv; do ffprobe -v error -select_streams v:0 -show_entries stream=height,width,avg_frame_rate,stream_tags:stream_tags=BPS -of default=noprint_wrappers=1:nokey=1 "$f";

done

Dernière modification par iznobe (Le 17/03/2023, à 00:34)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne