কোনও ভিডিও ফাইলের প্রতি সেকেন্ডের ফ্রেমগুলি কীভাবে সন্ধান করবেন?


44

উবুন্টুতে কোনও ভিডিওর এফপিএস পাওয়ার কোনও সহজ উপায় আছে? উইন্ডোতে আমি ভিডিও ফাইল সম্পর্কিত সমস্ত তথ্য জানতে Gspot ব্যবহার করি। তবে উবুন্টুতে আমি এই প্রাথমিক তথ্যটি খুঁজে পাওয়া খুব কঠিন। কোন সাহায্য প্রশংসা করা হয়।


এটি সম্ভব নয়, কারণ সমস্ত ভিডিও ফাইলের একটি "fps" নেই (কারণ ভিএফআর এনকোডিং বিদ্যমান)।
fkraiem

ভিএফআর ভিডিওগুলির এখনও একটি গড় ফ্রেম রেট রয়েছে - এটি কার্যকর কিনা বা না তা প্রয়োগের উপর নির্ভর করে।
thomasrutter

উত্তর:


47

এটি ফ্রেমরেটকে বলবে যদি এটি পরিবর্তনশীল ফ্রেমরেট না হয়:

ffmpeg -i ফাইল নাম

অস্পষ্ট ফাইল নাম সহ নমুনা আউটপুট:

'সামেরানডম.এমকেভি' থেকে ইনপুট # 0, ম্যাট্রোস্কা, ওয়েবম:
  সময়কাল: 01: 16: 10.90, শুরু: 0.000000, বিটরেট: এন / এ
    স্ট্রিম # 0.0: ভিডিও: h264 (উচ্চ), yuv420p, 720x344 [পিআর 1: 1 দার 90:43], 25 এফপিএস, 25 টিবিআর, 1 কেবিএন, 50 টিবিসি (ডিফল্ট)
    স্ট্রিম # 0.1: অডিও: এ্যাক, 48000 হার্জেড, স্টেরিও, এস 16 (ডিফল্ট)
ffmpeg -i ফাইলের নাম 2> & 1 | সেড-এন "এস /.**, \ (। * \) এফপি। * / \ 1 / পি"

এমন একজনের সাথে কেউ সম্পাদনা করেছেন যা আমার ইচ্ছা মতো কাজ করে নি। এটি এখানে রেফারেন্স করা হয়েছে
অতিরিক্ত সম্পাদনা ... আপনি যদি টিবিআর মান চান তবে এই সেড লাইনটি কাজ করে

সেড-এন "এস /.**, \ (। * \) টিবিআর। * / \ 1 / পি"

আমার ওয়ান লাইনারে fp এর পরিবর্তে টিবি ব্যবহার করা দরকার। সমস্ত ভিডিও ফাইল এফপিএসের প্রতিবেদন হিসাবে মনে হয় না তবে টিবিআর টিবিসির মতো সমস্ত অটপুট যার একই মান রয়েছে।
চুমুক দিয়া পান

বৈধ, তবে টিপিসি সম্পাদনা সম্পাদনা থেকে এক-লাইনার এই নির্দিষ্ট আউটপুটটিতে টিবিআর মান নয়। আমি কেন এটি পরিবর্তন করেছি তার কিছু বিবেচনা করার জন্য ... আমি বরং এটি যেভাবে দেখা যায় না তার চেয়ে এটি সত্যই লক্ষণীয় উপায়ে ব্যর্থ হয়।
রোবটহুমানস

আমি মনে করি শেষ পর্যন্ত sed -n "s/.*, \(.*\) tbr.*/\1/pমিস করছি ", না?
চুমুক দিয়া পান

6
ffmpeg অবমূল্যায়ন করা হয় না, avconv ffmpeg এর একটি শাখা থেকে এসেছিল এবং ffmpeg বিকল্প ব্যবহারকারীদের জন্য বিভ্রান্তি এড়ানোর জন্য জাল শাখাটিকে অবহিত হিসাবে চিহ্নিত করা হয়েছিল যাতে ব্যবহারকারীদের যে সংস্করণটি ব্যবহার করা হচ্ছে তা পরিবর্তিত হচ্ছে তা জানাতে। আপনার মন্তব্য বিভ্রান্তিমূলক এবং ব্যবহারকারীরা
ক্রিস

1
এটি পরিবর্তনশীল ফ্রেমের হার হলে কী হবে?
0xcaff

29
ffprobe -v 0 -of csv=p=0 -select_streams v:0 -show_entries stream=r_frame_rate infile

ফলাফল:

2997/100

3
এটি সম্ভবত সেরা উত্তর যা এটি ঠিক ফ্রেম রেট দেয় (উদাহরণস্বরূপ 24000/1001 = 23.976023976)
এনটিজি

1
কখনও কখনও আমি 0/0ফর্ম্যাট উপর নির্ভর করে পেতে
ড্যানিয়েল_এল

1
আপনি যা চান তার উপর নির্ভর করে এটি হয় কাজ করে বা না করে। এটি এনকোডিংয়ের ফ্রেমরেট রিপোর্ট করে তবে ভিডিওটির প্রকৃত ফ্রেমরেট নয়। উদাহরণস্বরূপ, 60fps এ এনকোড করা একটি 30fps ভিডিও 60fps প্রতিবেদন করবে তবে এখনও আসল আউটপুটে 30fps হবে।
হার্ভে

8
ভিডিও স্ট্রিমটি প্রথম স্ট্রিম না হলে এটি কাজ করে না, অডিও স্ট্রিমের দিকে তাকালে আপনি 0/0 পাবেন। আমি রাখার জন্য সম্পাদনা করব -select_streams V:0, যা প্রথম চলমান ভিডিও স্ট্রিমটি নির্বাচন করবে।
স্যাম ওয়াটকিন্স

2
@ স্যামওয়াটকিন্সের পরিপূরকটি গুরুত্বপূর্ণ। এটি ছাড়াই কমান্ড প্রদত্ত আউটপুট 0/0
jdhao

4

এখানে স্টেভেন পেনি এর উত্তর ভিত্তিক একটি অজগর ফাংশন যা ffprobe ব্যবহার করে যা সঠিক ফ্রেম রেট দেয়

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

2

কমান্ড লাইনের বিকল্পটি, নটিলাসের গ্রাফিকাল ফাইল ম্যানেজারের মাধ্যমে আপনার ফাইলের বৈশিষ্ট্যগুলি অনুসন্ধান করছে file অডিও / ভিডিও ফাইলগুলির জন্য আপনি অতিরিক্ত তথ্য সহ সেখানে একটি অতিরিক্ত ট্যাব পাবেন।


2

এমপ্লেয়ার ব্যবহার করে এটি করার জন্য এটি একটি অজগর স্ক্রিপ্ট, যদি কেউ আগ্রহী হয়। এটি ব্যবহৃত হয় 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

0

আপনি টার্গেট ফাইল, সম্পত্তি, অডিও / ভিডিওতে ডান ক্লিক করতে পারেন তবে আপনি সঠিক ফ্রেমরেট পাবেন না। একটি নির্দিষ্ট ফ্রেমরেট পেতে আপনি MediaInfo ইনস্টল করতে পারেন।


0

এই ক্ষেত্রে যদি কেউ হোঁচট খায় তবে অবশ্যই আপনি ইনপুট আর্গটিকে পথ হিসাবে ব্যবহার করতে পারেন;)

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

আমি সাধারণত যে exiftoolকোনও ফাইল ধরণের তথ্য পেতে ব্যবহার করি ... উদাহরণস্বরূপ কমান্ডের সাহায্যে exiftool file.swfআমি কোনও swf ফাইলের ফ্রেমরেট জানতে পারি, যা আমি অর্জন করতে পারি নাffmpeg


-1
ffprobe <media> 2>&1| grep ",* fps" | cut -d "," -f 5 | cut -d " " -f 2

1
এটি কি করবে তা ব্যাখ্যা করুন?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.