Ubuntuのビデオのfpsを見つける簡単な方法はありますか? Windowsでは、Gspotを使用して、ビデオファイルに関するすべての情報を見つけます。しかし、ubuntuでは、この基本的な情報を見つけることは非常に困難です。どんな助けも大歓迎です。
これにより、可変フレームレートでない場合のフレームレートがわかります。
ffmpeg -iファイル名
ファイル名が隠されたサンプル出力:
入力#0、matroska、webm、「somerandom.mkv」から: 期間:01:16:10.90、開始:0.000000、ビットレート:なし ストリーム#0.0 :動画:h264(高)、yuv420p、720x344 [PAR 1:1 DAR 90:43]、25 fps、25 tbr、1k tbn、50 tbc(デフォルト) ストリーム#0.1:オーディオ:aac、48000 Hz、ステレオ、s16(デフォルト)
ffmpeg -i filename 2>&1 | sed -n "s /.*、\(。* \)fp。*/\ 1/p"
誰かが私が望んでいた方法で動作しないもので編集しました。参照されている ここ
追加編集...このsed行が機能するTBR値が必要な場合
sed -n "s /.*、\(。* \)tbr。*/\ 1/p"
ffprobe -v 0 -of csv=p=0 -select_streams v:0 -show_entries stream=r_frame_rate infile
結果:
2997/100
正確なフレームレートを与えるffprobeを使用したスティーブンペニーの答えに基づいたpython関数
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
コマンドラインの代わりに、Nautilus(グラフィカルファイルマネージャー)のコンテキストメニューを使用してファイルのプロパティを確認します。オーディオ/ビデオファイルの場合、追加の情報を含む追加のタブが表示されます。
これは、誰でも興味がある場合に備えて、mplayerを使用してこれを行うpythonスクリプトです。 path/to/script path/to/movie_name1 path/to/movie/name2
などが使用されます
#!/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
ターゲットファイル、プロパティ、オーディオ/ビデオを右クリックできますが、正確なフレームレートは取得できません。正確なフレームレートを取得するには、MediaInfoをインストールできます。
私は通常exiftool
を使用して任意のファイルタイプの情報を取得します...たとえば、コマンドexiftool file.swf
を使用すると、ffmpeg
で達成できないswfファイルのフレームレートを知ることができます
誰かがこれに出くわした場合に備えて...もちろん、入力引数をパスとして使用できます;)
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)))