আমি একটি ভিডিও ক্লিপ থেকে কী ফ্রেমগুলি বের করার চেষ্টা করছি। আমি নিম্নলিখিত কমান্ডটি চেষ্টা করেছিলাম তবে এটি সমস্ত ফ্রেমগুলি বের করে।
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
আমি একটি ভিডিও ক্লিপ থেকে কী ফ্রেমগুলি বের করার চেষ্টা করছি। আমি নিম্নলিখিত কমান্ডটি চেষ্টা করেছিলাম তবে এটি সমস্ত ফ্রেমগুলি বের করে।
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
উত্তর:
আপনি ভিডিও ফিল্টার -skip_frame
প্রয়োজন ছাড়াই ব্যবহার করে এটিকে আরও সহজ করে তুলতে পারেন select
:
ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg
-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-এর চেয়ে কম)!
-threads 1
অন্যথায় আউটপুট কীফ্রেমগুলির ক্রমটি ক্রমানুসারে জারি করা যেতে পারে। এই সমস্যাটি মোকাবেলার জন্য যদি আপনার কোনও ধরণের পোস্ট-হক উপায় থাকে তবে আপনি মাল্টি-থ্রেডিং ধরে রাখতে পারবেন। এছাড়াও, দেখে মনে হচ্ছে এটি ব্যবহারের পরেও এমনকি অর্ডার-অফ-অর্ডার কীফ্রেমগুলি পাওয়া সম্ভব -threads 1
, তবে এখন এই ক্ষেত্রে এই জাতীয় সমস্ত ঘটনা একটি h264 ডিকোডার ত্রুটির সাথে সংযুক্ত / পতাকাযুক্ত বলে মনে হচ্ছে illegal short term buffer state detected
।
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
ইনপুট আমাকে বলবে যে এটি পুরানো হতে পারে তার আগে আপনার ফিল্টারটিকে অনুমতি দেয়। আপনার অপারেটিং সিস্টেমের জন্য সাম্প্রতিক স্ট্যাটিক বিল্ডটি ডাউনলোড করুন , বা উপরের কাজ না করে সংকলন গাইড অনুযায়ী নিজেকে তৈরি করুন ।
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
যদি এই ত্রুটিগুলি :
বিকল্প ভিএফ (ভিডিও ফিল্টারগুলি সেট করুন) ইনপুট ইউআরএল 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" অগ্রিম পরামিতি