কোনও ভিডিও ক্লিপ থেকে কী কী সমস্ত ফ্রেম বের করা যায়?


10

আমি একটি ভিডিও ক্লিপ থেকে কী ফ্রেমগুলি বের করার চেষ্টা করছি। আমি নিম্নলিখিত কমান্ডটি চেষ্টা করেছিলাম তবে এটি সমস্ত ফ্রেমগুলি বের করে।

ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg

উত্তর:


20

আপনি ভিডিও ফিল্টার -skip_frameপ্রয়োজন ছাড়াই ব্যবহার করে এটিকে আরও সহজ করে তুলতে পারেন select:

ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg

2
আশ্চর্যজনক, নির্বাচিত ফিল্টার সহ 3 মিনিটেরও বেশি সময়ের তুলনায় 20 মিনিটের ভিডিওতে 10 এরও কম সময় লাগে!
পাগল

-threads 1ডিফল্টের সাথে তুলনা করে এটি নিশ্চিত করুন , -threads autoএটি আমার সিস্টেমে একটি cropdetectফিল্টার গ্রাফ ( ffmpeg -threads 1 -skip_frame nokey -i input.mkv -filter:v select='not(mod(n\,20))',cropdetect -an -f null /dev/null) 2x তত দ্রুত করে তোলে (60 এর দশকে 60-এর চেয়ে কম)!
Genpfault

আমি স্কিপ_ফ্রেম নোকি ব্যবহার করব না। আপনি কি আউটপুট চেক করেছেন? আমার ফাইল এবং বিল্ডে (আগস্ট 2019) আমি অনুপযুক্ত টাইম স্ট্যাম্পগুলি পাই, যেমন নোকি আমাকে আই ফ্রেমের আগে পূর্ববর্তী ফ্রেম দেয়, যখন নন-ফিল্টারযুক্ত / সমস্ত ফ্রেম পরবর্তী সময়ের স্ট্যাম্পে আই ফ্রেম দেখায়।
জেসনএক্সএ

@ জেনপফল্ট যে কারণে ব্যবহারের পরামর্শ দেয় তা হ'ল -threads 1অন্যথায় আউটপুট কীফ্রেমগুলির ক্রমটি ক্রমানুসারে জারি করা যেতে পারে। এই সমস্যাটি মোকাবেলার জন্য যদি আপনার কোনও ধরণের পোস্ট-হক উপায় থাকে তবে আপনি মাল্টি-থ্রেডিং ধরে রাখতে পারবেন। এছাড়াও, দেখে মনে হচ্ছে এটি ব্যবহারের পরেও এমনকি অর্ডার-অফ-অর্ডার কীফ্রেমগুলি পাওয়া সম্ভব -threads 1, তবে এখন এই ক্ষেত্রে এই জাতীয় সমস্ত ঘটনা একটি h264 ডিকোডার ত্রুটির সাথে সংযুক্ত / পতাকাযুক্ত বলে মনে হচ্ছে illegal short term buffer state detected
গ্লেন স্লেডেন

12

selectএবং scaleফিল্টার ব্যবহার করে উদাহরণ :

ffmpeg -i 2.flv -vf "select=eq(pict_type\,I),scale=73x41" \
-vsync vfr -qscale:v 2 thumbnails-%02d.jpeg

কয়েকটি টিপস:

  • ফিল্টারগুলি -iবিকল্পের আগে আসবে না , কারণ সেগুলি আউটপুট বিকল্প। আপনি ঠিক কোথায় থেকে আদেশ পেয়েছিলেন তা আমি জানি না, তবে PICT_TYPE_Iবিদ্যমান নেই - এটি হওয়া উচিত I

  • ইন scaleফিল্টার প্রতিস্থাপন করতে পারেন 73বা 41যেমন: ফিল্টার স্বয়ংক্রিয়ভাবে প্রস্থ বা উচ্চতা অনুপাত সংরক্ষণ নিরূপণ scale=73:-1বা scale=-1:41। এটি প্রসারিত বা স্কোচিং প্রতিরোধ করে যা "জোর করে" স্কেলিংয়ের ফলে আসতে পারে।

  • আউটপুট গুণমান -qscale:v(বা উপনাম -q:v) দিয়ে নিয়ন্ত্রণ করা যায় । কার্যকর পরিসরটি 2 থেকে 31 এর লিনিয়ার স্কেল এবং নিম্ন মানের একটি উচ্চ মানের।

  • ffmpegইনপুট আমাকে বলবে যে এটি পুরানো হতে পারে তার আগে আপনার ফিল্টারটিকে অনুমতি দেয়। আপনার অপারেটিং সিস্টেমের জন্য সাম্প্রতিক স্ট্যাটিক বিল্ডটি ডাউনলোড করুন , বা উপরের কাজ না করে সংকলন গাইড অনুযায়ী নিজেকে তৈরি করুন ।


1
যদি আপনার লক্ষ্যটি চূড়ান্তভাবে কী ফ্রেমগুলি বের করে আনতে হয় তবে আপনি নিম্নলিখিতগুলি চেষ্টা করতে পারেন:ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
পেলটিয়ার

0

যদি এই ত্রুটিগুলি :

বিকল্প ভিএফ (ভিডিও ফিল্টারগুলি সেট করুন) ইনপুট ইউআরএল 1508.mp4 এ প্রয়োগ করা যাবে না - আপনি একটি আউটপুট ফাইলে অথবা বিপরীতে কোনও ইনপুট বিকল্প প্রয়োগ করার চেষ্টা করছেন। ফাইলটি অন্তর্ভুক্ত হওয়ার আগে এই বিকল্পটি সরান। 1508.mp4 ইনপুট ফাইলের জন্য বিকল্পগুলি পার্সিংয়ে ত্রুটি। ইনপুট ফাইলগুলি খোলার সময় ত্রুটি: অবৈধ যুক্তি

তুমি এটি করতে পারো:

ffmpeg -i 263.mp4 -vf select=eq(pict_type\,PICT_TYPE_I)  -vsync 2 -s 480x320 -r 24 -f image2 thumbnails-%05d.jpeg

== --------------------------------------------

"-I" অগ্রিম পরামিতি

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