비디오 파일의 초당 프레임을 찾는 방법은 무엇입니까? 사용하여 비디오 파일에 대한 모든 정보를 찾습니다.

우분투에서 비디오의 FPS를 찾는 간단한 방법이 있습니까? Windows에서는 Gspot을 사용하여 비디오 파일에 대한 모든 정보를 찾습니다. 그러나 우분투에서는이 기본 정보를 찾는 것이 매우 어렵다는 것을 알았습니다. 도움을 주시면 감사하겠습니다.



답변

가변 프레임 속도가 아닌 경우 프레임 속도를 알려줍니다.

ffmpeg -i 파일 이름

파일 이름이 가려진 샘플 출력 :

'somerandom.mkv'에서 # 0, matroska, webm을 입력하십시오.
  지속 시간 : 01 : 16 : 10.90, 시작 : 0.000000, 비트 전송률 : N / A
    스트림 # 0.0 : 비디오 : h264 (높음), yuv420p, 720x344 [PAR 1 : 1 DAR 90:43], 25fps, 25tbr, 1k tbn, 50 tbc (기본값)
    스트림 # 0.1 : 오디오 : aac, 48000Hz, 스테레오, s16 (기본값)
ffmpeg -i 파일 이름 2> & 1 | sed -n "s /.*, \ (. * \) fp. * / \ 1 / p"

내가 원하는 방식으로 작동하지 않는 것으로 편집했습니다. 여기 참조 됩니다
추가 편집 … tbr 값을 원하면이 sed line이 작동합니다

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를 사용한 Steven Penny의 답변을 기반으로 한 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

답변

명령 행의 대안은 노틸러스 (그래픽 파일 관리자)의 상황에 맞는 메뉴를 통해 파일의 속성을 보는 것입니다. 오디오 / 비디오 파일의 경우 추가 정보가있는 추가 탭이 있습니다.


답변

이것은 누군가 관심이있는 경우 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를 설치할 수 있습니다.


답변

누군가가 이것을 우연히 발견 한 경우를 대비하여 … 입력 인수를 경로로 사용할 수 있습니다.)

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)))