ভিএলসি বা এফএফপিজেগ ব্যবহার করে একটি ভিডিওতে "প্রতি দশটি ফ্রেমের একটি" বের করা


12

আমি বৈজ্ঞানিক প্রয়োজনে একটি ভিডিওর ফ্রেম (অর্থাত্ 1 টি এক্সট্রাক্ট 1, 9 টি ছেড়ে পুনরাবৃত্তি করুন) "প্রতিটি 10 ​​এর ঠিক 1 ফ্রেম" বের করার চেষ্টা করছি। ভিডিওটি 105 ফ্রেম, 3.5 সেকেন্ড, 29.97fps (h.264, .ov, নিকন ডি 3100 প্রযোজিত)।

আমি এটি এখানে আপলোড করেছি

ভিএলসি

কমান্ডের নীচে 10 টি ফ্রেম তৈরি করা উচিত তবে এটি কেবল 6 টি চিত্র তৈরি করে। আমি বিভিন্ন দৃশ্যের অনুপাত চেষ্টা করেছি এবং তাদের উভয়ই সঠিক সংখ্যক ফ্রেম তৈরি করতে পারি না (এমনকি সংশোধনের কাছাকাছিও নয়)।

vlc 1.mov --video-filter=scene --vout=dummy --scene-ratio=10 --scene-prefix=img- --scene-path=. vlc://quit

কেউ দয়া করে আমাকে বলবেন সমস্যা কি?

FFmpeg

এফএফম্পেগের ঠিক আমার উদ্দেশ্যটির জন্য কোনও কমান্ড নেই বলে মনে হচ্ছে। নীচে কমান্ড প্রতি সেকেন্ডের মধ্যে 3 টি ফ্রেম বের করে, তবে যেহেতু FPS হুবহু 30 নয় (বরং 2.97), এটি আমার জন্য সঠিক ফলাফল আনবে না।

এছাড়াও এফএফম্পেগ এমনকি এই কমান্ডের সাহায্যে ফ্রেমের সঠিক সংখ্যাও দেয় না। ৩.৫ সেকেন্ডের ভিডিওর জন্য আমি সর্বাধিক 10 ফ্রেম প্রত্যাশা করি তবে আমি যা পাই তা 12 ফ্রেম!

ffmpeg -i 1.mov -y -an -sameq  -r 3 -f image2 -vcodec mjpeg %03d.jpg 

আমি যা চাই তা কীভাবে অর্জন করতে পারি?


1
বিটিডাব্লু -sameqআপনার সম্ভবত যা মনে হয় তা করে না এবং বর্তমান সংস্করণটি থেকে সরিয়ে দেওয়া হয়েছে (আসল এফএফএমপিগ এটি হ'ল আমি নিশ্চিত নই যে এটি উবুন্টু নকল এফফেম্পেজে আছে)। পরিবর্তে কিউস্কেল ব্যবহার করুন।
2:38

উত্তর:


21

প্রতি 10 টি ফ্রেমের মধ্যে 1 টি ফ্রেম নির্বাচন করুন

এটি করতে আপনি selectভিডিও ফিল্টারটি ব্যবহার করতে পারেন ffmpeg:

ffmpeg -i input.mov -vf "select=not(mod(n\,10))" -vsync vfr -q:v 2 img_%03d.jpg
  • জেপিজি আউটপুট জন্য আপনি মানের সাথে বিভিন্ন পরিবর্তন করতে পারেন -q:v। কার্যকর পরিসীমা 2 (সেরা মানের) থেকে 31 (সবচেয়ে খারাপ মানের)। আপনি যদি পরিবর্তে পিএনজিতে আউটপুট করতে চান তবে আপনার এই বিকল্পের দরকার নেই।

  • এই ইচ্ছার আউটপুট img_001.jpg, img_002.jpg, img_003.jpg, ইত্যাদি


দেখতে খুব আকর্ষণীয়, তবে মনে হচ্ছে কিছু নির্দিষ্ট সংস্করণ বা অতিরিক্ত সংকলিত কিছু দরকার। আমি unrecognized option '-filter:v'"FFmpeg সংস্করণ SVN-r0.5.1-4: 0.5.1-1ubuntu1.3" সহ "" পেয়েছি (- সক্ষম-আভিল্ডার - সক্ষম-আভিল্ডার-ল্যাভফ - সক্ষম-ভিডিপাউ - সক্ষম-বিজেলিব - সক্ষম) -libgsm --able-libschroedinger --enable-libspeex --enable-libtheora --able-libvorbis --enable-pthreads --able-zlib --disable-stripping --disable-vhook --able-runtime-cpudetect - -সক্ষম-জিপিএল - সক্ষম-পোস্টপ্রোক - সক্ষম-সুইস্কেল - সক্ষম-এক্স
গ্র্যাব

আমি কমান্ডটি চালাতে এবং ffmpeg উইন্ডোজ N-35709-g7d531e8 এ নিম্নলিখিত ত্রুটিটিও পেতে পারি না: [@ 017EBB00 নির্বাচন করুন] [ইভাল @ 0022D08] অনুপস্থিত ')' 'বা' মোড (এন \, 10)) 'তে অনেকগুলি আর্গ @ 017EBB00 নির্বাচন করুন] এক্সপ্রেশনটি পার্স করার সময় ত্রুটি 'না (মোড (এন \, 10))' ফিল্টার আরম্ভের সময় ত্রুটি 'আরগস দিয়ে নয়' নির্বাচন করুন '(মোড (এন \, 10))' ফিল্টার খোলার সময় ত্রুটি!
wmac

@ উবুন্টু রেপো থেকে আপনার এফএফপিপিগ সংস্করণটি মুভিং করার ক্ষমতা নেই। আপনাকে এফএফম্পেগ কম্পাইল করতে হবে ।
লগন

1
@Wmac আমার ধারণা উইন্ডোজ একক উক্তি পছন্দ করে না। তাদের উদ্ধৃতি চিহ্ন পরিবর্তন করুন: "
লগন

1
@ লর্ডনেকবার্ড, ধন্যবাদ, এটি সঠিকভাবে চালিত হয়েছে এবং পুরো সমস্যার সমাধান করেছে। আমি সত্যিই আপনার সাহায্যের প্রশংসা করি।
wmac

4

আপনার প্রশ্নের সবচেয়ে গুরুত্বপূর্ণ দিকটি হ'ল ভিডিওটি প্রতি সেকেন্ডে 29.97 ফ্রেম ব্যবহার করে 30 টি নয়। Pesky NTSC।

যাইহোক, আমি মনে করি কেবল প্রতিটি ফ্রেমই বের করে নেওয়া সবচেয়ে সহজ হবে এবং তারপরে আপনার যা প্রয়োজন নেই সেগুলি সরিয়ে ফেলুন:

ffmpeg -i 1.mov -y -f image2 -c:v mjpeg %03d.jpg

তারপরে, আপনার যা প্রয়োজন নেই সেগুলি সরিয়ে ফেলুন। যেহেতু প্রতি দশম ফ্রেম একটি দিয়ে শেষ হবে 1.jpg, আমরা কেবল সমস্ত অন্যান্যকে নিতে পারি…

find . -maxdepth 1 -not -iname "*1.jpg"

… এবং একবার নিশ্চিত হয়ে গেলে আপনি এগুলি মুছে ফেলতে চান:

find . -maxdepth 1 -not -iname "*1.jpg" -exec rm '{}' \;

আপনি যদি ব্যবহার করতে পারেন তবে ডকুমেন্টেশনে যেমন ব্যাখ্যা করা হয়েছে তেমন বিকল্পটিও mencoderচেষ্টা করে দেখতে পারেন । যদিও আমি ব্যক্তিগতভাবে এটি ইনস্টল / চেষ্টা করতে পারি না।framestepframestep=10


1
আপনার সাহায্য এবং আপনার সম্পাদনার জন্য আপনাকে অনেক ধন্যবাদ। আমি মেনকোডার চেষ্টা করেছিলাম এমনকি এটিরও সমস্যা আছে! আমার ধারণা কোডেক বা ধারকটির সাথে এটির কিছু আছে। ffmpeg নীচের কমান্ডের সাথে ঠিক 105 ফ্রেম বের করে: ffmpeg -i 1.mov -y -an -sameq -f image2 -vcodec mjpeg% 03d.jpg তবে মেনকোডার কেবল 90 ফ্রেমই বের করে !!! নীচের কমান্ড সহ: mplayer -vo png 1.mov ফ্রেমস্টেপ = 10 ব্যবহার করাও ভুল সংখ্যক ফ্রেম তৈরি করে। তিনটি (ffmpeg, vlc এবং মেনকোডার) কীভাবে এই জাতীয় কোনও কাজ সঠিকভাবে করতে অক্ষম তা নিয়ে আমি হতবাক হয়েছি। আমি ভিএলসি ওয়েবসাইটে একটি বাগ রিপোর্ট জমা দিয়েছি। আবার ধন্যবাদ.
wmac

0

আপনি যদি প্রথমে ভিডিওটিকে কোনও কাঁচা আরজিবি 24 বা আরজিবি 32 ইমেজের সিরিজে রূপান্তর করতে চান তবে আপনি সম্ভবত সঠিক আকারের ফ্রেমগুলি পেতে সক্ষম হবেন যেহেতু মূল ফর্মের মধ্যে এমন অস্বাভাবিক ফ্রেমের প্রকারগুলি অন্তর্ভুক্ত থাকতে পারে যা চিত্রগুলি নাও থাকতে পারে ?? ?

মূল লেজার ডিস্কে পুরো ভিডিওটি 1 থেকে 100,000 বা তারও বেশি স্বতন্ত্র ফ্রেম সংখ্যা সহ একাধিক চিত্রের সমন্বয়ে তৈরি হয়েছিল এবং ভবিষ্যতের রূপান্তর বা ম্যানিপুলেশনগুলির জন্য একটি বেসলাইন স্থাপন করার জন্য এটি সত্যিকারের সঠিক উপায়।

শিল্পটি অদ্ভুতভাবে কমিয়ে আনার জন্য এবং অজানা সংস্থার সত্যিকারের বৈজ্ঞানিক ফর্মগুলিকে দূষিত করার জন্য এই অদ্ভুত সংক্ষেপণ ধারণায় পরিবর্তিত হয়েছে।

আপনাকে প্রথমে কোনও অডিওকে ওয়েভ ফাইল হিসাবে বের করতে হবে যাতে অডিও পুরোপুরি হারাতে না পারে। দেখে মনে হচ্ছে এফএফএমপিইজি প্রতিটি উত্তোলিত চিত্রটিতে শনাক্তকরণের তথ্য রাখে, কারণ আপনি যদি কেবল সরিয়ে নেওয়া চিত্রগুলি থেকে চিত্রগুলি একত্রে স্ট্রিং করার চেষ্টা করেন এবং আপনি অন্যান্য উত্স থেকে একই চিত্রের সাথে অন্য চিত্রগুলি মিশ্রিত করেন, ffmpeg আপনি সমস্ত চিত্রের মাঝখানে ভাগ করার চেষ্টা করেছেন এমন চিত্রগুলি উপেক্ষা করবে ।

লেজার ডিস্ক বিন্যাসের সাহায্যে ফ্রেম হারটি আপনি যে অনুক্রমিক চিত্রগুলি উপস্থাপন করেন সেগুলি নির্ধারণ করে এবং চিত্রগুলি নিজের দ্বারা কোনও উপায়ে নিয়ন্ত্রণ না করে।

এফএফএমপিইগ হ্যান্ডলিং এবং যে কোনও ধরণের চিত্র প্রদর্শনের জন্য শিল্পের পরিবর্তে বিজ্ঞানের পাঠ গ্রহণ করতে পারে। অথবা সম্ভবত পুরো এভি শিল্প নিজেই। শিল্পটিকে সত্যই হার্ডওয়ারের দক্ষতা উন্নত করতে হবে এবং কাঁচা ডেটা ব্যবহার করতে হবে যার জন্য প্রচুর স্মৃতি / সঞ্চয়স্থান প্রয়োজন। নির্ভুলতা এবং নির্ভুলতার জন্য কোনও কিছুই কাঁচা ডেটা মারছে না।

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