it-swarm.com.de

Wie finde ich Bilder pro Sekunde in einer Videodatei?

Gibt es eine einfache Möglichkeit, die fps eines Videos in Ubuntu zu finden? In Windows verwende ich Gspot, um alle Informationen zu einer Videodatei herauszufinden. Aber in Ubuntu finde ich es sehr schwierig, diese grundlegenden Informationen herauszufinden. Jede Hilfe wird geschätzt.

44
Vivek

Dies wird Ihnen die Framerate sagen, wenn es nicht variable Framerate ist:

ffmpeg -i Dateiname

Beispielausgabe mit verdecktem Dateinamen:

 Eingabe Nr. 0, Matroska, Webm, aus 'somerandom.mkv': 
 Dauer: 01: 16: 10.90, Start: 0.000000, Bitrate: N/A 
 Stream Nr. 0.0 : Video: h264 (Hoch), yuv420p, 720 x 344 [PAR 1: 1 DAR 90:43], 25 fps, 25 tbr, 1 k tbn, 50 tbc (Standard) 
 Stream Nr. 0.1: Audio: aac, 48000 Hz, Stereo, s16 (Standard) 
ffmpeg -i Dateiname 2> & 1 | sed -n "s /.*,\(. * \) fp. */\ 1/p"

Jemand hat mit einem bearbeitet, der nicht so funktioniert hat, wie ich es wollte. Es wird verwiesen hier
Zusätzliche Bearbeitung ... Wenn Sie den tbr-Wert möchten, funktioniert diese sed-Linie

sed -n s /.*,\(. * \) tbr. */\ 1/p
46
RobotHumans
ffprobe -v 0 -of csv=p=0 -select_streams v:0 -show_entries stream=r_frame_rate infile

Ergebnis:

2997/100
28
Steven Penny

Hier ist eine python -Funktion basierend auf Steven Pennys Antwort unter Verwendung von ffprobe, die die genaue Bildrate angibt

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
4
ntg

Die Alternative zur Kommandozeile ist das Anzeigen der Eigenschaften Ihrer Datei über das Kontextmenü in Nautilus (grafischer Dateimanager). Für Audio-/Videodateien erhalten Sie dort einen zusätzlichen Reiter mit zusätzlichen Informationen.

2
user32288

Dies ist ein python Skript, um dies mit mplayer zu tun, falls jemand interessiert ist. Es wird path/to/script path/to/movie_name1 path/to/movie/name2 etc. Verwendet

#!/usr/bin/python
# -*- coding: utf-8 -*-

import subprocess
import re
import sys

pattern = re.compile(r'(\d{2}.\d{3}) fps')
for moviePath in sys.argv[1:]:
    mplayerOutput = subprocess.Popen(("mplayer", "-identify", "-frames", "0", "o-ao", "null", moviePath), stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
    fps = pattern.search(mplayerOutput).groups()[0]
    print fps
2
sup

Sie können mit der rechten Maustaste auf die Zieldatei, Eigenschaften, Audio/Video, klicken, aber die genaue Bildrate wird nicht angezeigt. Um eine genaue Bildrate zu erhalten, können Sie MediaInfo installieren.

0
vladmateinfo

Normalerweise verwende ich exiftool, um Informationen zu jedem Dateityp abzurufen ... Zum Beispiel mit dem Befehl exiftool file.swf Ich kann die Bildrate jeder SWF-Datei ermitteln, was ich mit ffmpeg nicht erreichen kann.

0
aesede

Nur für den Fall, dass jemand darüber stolpert ... Sie können natürlich input arg als Pfad verwenden;)

import numpy as np
import os
import subprocess

def getFramerate():
    con = "ffprobe -v error -select_streams v:0 -show_entries stream=avg_frame_rate -of default=noprint_wrappers=1:nokey=1 D:\\Uni\\Seminar\\leecher\\Ninja\\stream1.mp4"

    proc = subprocess.Popen(con, stdout=subprocess.PIPE, Shell=True)
    framerateString = str(proc.stdout.read())[2:-5]
    a = int(framerateString.split('/')[0])
    b = int(framerateString.split('/')[1])
    return int(np.round(np.divide(a,b)))
0
WhatAMesh