75 votes

Comment trouver les images par seconde d'un fichier vidéo ?

Existe-t-il un moyen simple de trouver les fps d'une vidéo sous ubuntu ? Sous Windows, j'utilise Gspot pour trouver toutes les informations sur un fichier vidéo. Mais sous Ubuntu, je trouve qu'il est très difficile de trouver cette information de base. Toute aide est la bienvenue.

82voto

RobotHumans Points 27764

Cela vous indiquera le framerate si ce n'est pas un framerate variable :

ffmpeg -i filename

Exemple de sortie avec nom de fichier masqué :

Input #0, matroska,webm, from 'somerandom.mkv':
  Duration: 01:16:10.90, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: h264 (High), yuv420p, 720x344 \[PAR 1:1 DAR 90:43\], 25 fps, 25 tbr, 1k tbn, 50 tbc (default)
    Stream #0.1: Audio: aac, 48000 Hz, stereo, s16 (default)
    ffmpeg -i filename 2>&1 | sed -n "s/.\*, \\(.\*\\) fp.\*/\\1/p"

Quelqu'un en a édité un qui n'a pas fonctionné comme je le voulais. C'est référencé aquí
Modification supplémentaire...Si vous voulez la valeur du tbr, cette ligne sed fonctionne

sed -n "s/.\*, \\(.\*\\) tbr.\*/\\1/p"

48voto

Zombo Points 1663
ffprobe -v 0 -of csv=p=0 -select_streams v:0 -show_entries stream=r_frame_rate infile

Résultat :

2997/100

8voto

ntg Points 447

Voici une fonction Python basée sur la réponse de Steven Penny utilisant ffprobe qui donne le taux d'images exact.

ffprobe 'Upstream Color 2013 1080p x264.mkv' -v 0 -select_streams v -print_format flat -show_entries stream=r_frame_rate

import sys
import os
import subprocess
def get_frame_rate(filename):
    if not os.path.exists(filename):
        sys.stderr.write("ERROR: filename %r was not found!" % (filename,))
        return -1         
    out = subprocess.check_output(["ffprobe",filename,"-v","0","-select_streams","v","-print_format","flat","-show_entries","stream=r_frame_rate"])
    rate = out.split('=')[1].strip()[1:-1].split('/')
    if len(rate)==1:
        return float(rate[0])
    if len(rate)==2:
        return float(rate[0])/float(rate[1])
    return -1

2voto

Pratheeksha Points 1

L'alternative à la ligne de commande est de regarder les propriétés de votre fichier via le menu contextuel de Nautilus (gestionnaire de fichiers graphique). Pour les fichiers audio/vidéo, vous obtenez un onglet supplémentaire contenant des informations supplémentaires.

2voto

Récupérer le débit d'images moyen donnée sous forme de fraction :

fraction=$(ffprobe -v error -select_streams v:0 -show_entries stream=avg_frame_rate -of default=nw=1:nk=1 "${input}")

Puis divisez-le en arrondissant à l'unité entier le plus proche :

Python -c "print (round(${fraction}))"

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