Czy jest jakiś prosty sposób na znalezienie fps wideo w Ubuntu? W systemie Windows używam Gspot, aby znaleźć wszystkie informacje o pliku wideo. Ale w ubuntu bardzo trudno jest mi znaleźć tę podstawową informację. Każda pomoc jest mile widziana.
Czy jest jakiś prosty sposób na znalezienie fps wideo w Ubuntu? W systemie Windows używam Gspot, aby znaleźć wszystkie informacje o pliku wideo. Ale w ubuntu bardzo trudno jest mi znaleźć tę podstawową informację. Każda pomoc jest mile widziana.
Odpowiedzi:
To powie ci framerate, jeśli nie jest zmienną framerate:
nazwa pliku ffmpeg -i
Przykładowe dane wyjściowe z ukrytą nazwą pliku:
Wpisz nr 0, matroska, webm, z 'somerandom.mkv': Czas trwania: 01: 16: 10.90, start: 0,000000, szybkość transmisji: nie dotyczy Strumień # 0.0: Wideo: h264 (High), yuv420p, 720x344 [PAR 1: 1 DAR 90:43], 25 fps, 25 tbr, 1k tbn, 50 tbc (domyślnie) Strumień # 0.1: Audio: aac, 48000 Hz, stereo, s16 (domyślnie)
ffmpeg -i nazwa pliku 2> i 1 | sed -n "s /.*, \ (. * \) fp. * / \ 1 / p"
Ktoś edytował z takim, który nie działał tak, jak chciałem. Jest tu odniesienie
Dodatkowa edycja ... Jeśli chcesz mieć wartość tbr, ta linia sed działa
sed -n "s /.*, \ (. * \) tbr. * / \ 1 / p"
sed -n "s/.*, \(.*\) tbr.*/\1/p
tęskni "
w końcu, nie?
ffprobe -v 0 -of csv=p=0 -select_streams v:0 -show_entries stream=r_frame_rate infile
Wynik:
2997/100
0/0
zależności od formatu
-select_streams V:0
, który wybierze pierwszy ruchomy strumień wideo.
0/0
.
Oto funkcja pytona oparta na odpowiedzi Stevena Penny'ego za pomocą ffprobe, która daje dokładną częstotliwość klatek
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
Alternatywą dla wiersza poleceń jest przeglądanie właściwości pliku za pomocą menu kontekstowego w Nautilus (graficzny menedżer plików). W przypadku plików audio / wideo dostępna jest dodatkowa karta z dodatkowymi informacjami.
To jest skrypt Pythona, aby to zrobić za pomocą mplayera, na wypadek, gdyby ktoś był zainteresowany. Jest używany path/to/script path/to/movie_name1 path/to/movie/name2
itp
#!/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
Możesz kliknąć prawym przyciskiem myszy plik docelowy, Właściwości, Audio / Wideo, ale nie uzyskasz dokładnej liczby klatek na sekundę. Aby uzyskać dokładną liczbę klatek na sekundę, możesz zainstalować MediaInfo.
Na wypadek, gdyby ktoś natknął się na to ... możesz oczywiście użyć argumentu wejściowego jako ścieżki;)
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)))