দৃশ্য সনাক্তকরণের মাধ্যমে এফএফএমপিইগ ব্যবহার করে একটি ভিডিও বিভক্ত করুন


17

আমি এই থ্রেডটি দেখেছি, যা আমি যা চাই ঠিক তা করে তবে আমি দৃশ্য সনাক্তকরণে বিভাজন খুঁজছি।

বড় আকারের মোভ ভিডিও ফাইলগুলি স্বয়ংক্রিয়ভাবে কালো ফ্রেমে ছোট ফাইলগুলিতে বিভক্ত করুন (দৃশ্য পরিবর্তন)?

উদাহরণস্বরূপ, ধরা যাক আমি 0:01 -> 0:05 থেকে স্ক্রিনে একজন মহিলা রয়েছি, তার পরে 0:06 -> 0:09 থেকে ভিন্ন দৃশ্যে একজন পুরুষ এবং 0:10 - এর পর্দায় দ্বিতীয় মহিলা - > 0:14

এটি (আদর্শভাবে) তিনটি পৃথক ভিডিও ক্লিপ তৈরি করবে। দৃশ্যগুলি পরিবর্তিত হওয়ার জন্য স্বয়ংক্রিয় অনুসন্ধানের সাথে আমি এটি সম্ভব হলে ফ্রেমের স্তরে নেমে যেতে চাই।

** আপডেট **

ঠিক আছে, আমি একটি দুর্দান্ত শুরু করছি। আমি এফএফপ্রোব ব্যবহার করে নিম্নলিখিতটি করেছি:

ffprobe -show_frames -of compact=p=0 -f lavfi "movie=foo.mp4,select=gt(scene\,.4)" > foo.txt

যা আমাকে টাইমস্ট্যাম্পগুলির একটি তালিকা দেয় যা ঠিক ঠিক প্রদর্শিত হয়! এখন পরবর্তী পদক্ষেপ - আমি টাইমস্ট্যাম্পগুলির এই তালিকাটি কীভাবে নেব এবং এটিকে বিভক্ত করতে ffmpeg এ আবার ইনপুট করব? টাইমস্ট্যাম্পগুলির উদাহরণ এখানে।

media_type=video|key_frame=1|pkt_pts=972221|pkt_pts_time=10.802456|pkt_dts=972221|pkt_dts_time=10.802456|best_effort_timestamp=972221|best_effort_timestamp_time=10.802456|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=5083698|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.503364
media_type=video|key_frame=1|pkt_pts=2379878|pkt_pts_time=26.443089|pkt_dts=2379878|pkt_dts_time=26.443089|best_effort_timestamp=2379878|best_effort_timestamp_time=26.443089|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=12736403|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=1.000000
media_type=video|key_frame=1|pkt_pts=2563811|pkt_pts_time=28.486789|pkt_dts=2563811|pkt_dts_time=28.486789|best_effort_timestamp=2563811|best_effort_timestamp_time=28.486789|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=13162601|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.745838
media_type=video|key_frame=1|pkt_pts=2627625|pkt_pts_time=29.195833|pkt_dts=2627625|pkt_dts_time=29.195833|best_effort_timestamp=2627625|best_effort_timestamp_time=29.195833|pkt_duration=N/A|pkt_duration_time=N/A|pkt_pos=13485087|pkt_size=6220800|width=1920|height=1080|pix_fmt=rgb24|sample_aspect_ratio=1:1|pict_type=I|coded_picture_number=0|display_picture_number=0|interlaced_frame=0|top_field_first=0|repeat_pict=0|tag:lavfi.scene_score=0.678877

বিদ্যমান প্রশ্নটিতে একটি নতুন প্রশ্ন সম্পাদনা করবেন না, একটি নতুন প্রশ্ন জিজ্ঞাসা করুন এবং আপনি কীভাবে সময় স্ট্যাম্পগুলি পেলেন তার জন্য এটি আবার উল্লেখ করুন।
djsmiley2k অন্ধকারে

উত্তর:


4

আপনি সরাসরি ffmpegফ্রেম সম্পর্কিত তথ্য মুদ্রণ এবং পার্সিংয়ের প্রয়োজন ছাড়াই ফ্লাইয়ের দৃশ্যগুলি সনাক্ত করতে এবং এটি নিষেধ করতে ব্যবহার করতে পারেন :

ffmpeg -i foo.mp4 -vf select='gt(scene\,0.4)' -vsync vfr frame%d.png

-vsync vfrপ্রয়োজনীয় কারণ ইমেজ নিষ্কাশন ডিফল্টরূপে পরিবর্তনশীল ফ্রেমরেট সাথে কাজ করে না দেখতে হয় # 1644


এই পদ্ধতিটি আমার জন্য সতর্কতা সহ ffmpeg ক্র্যাশ করে More than 1000 frames duplicated
ashleedawg

1
আপনি কীভাবে ছোট ছোট ভিডিও তৈরি করেছেন? উপরের কমান্ডটি পিএনজি চিত্র তৈরি করে ছোট এমপি 4 ভিডিও তৈরি করে না।
জুয়ান পাবলো ফার্নান্দেজ

3

আপনার টাইমস্ট্যাম্পগুলি পেতে এবং একটি .txt ফাইলে মুদ্রণ করতে আপনার পাঠ্যটি প্রসেস করুন, ffmpeg সেগমেন্টারে .txt ব্যবহার করুন।

নির্ভুলতা নিখুঁত হবে না এবং আগত সামগ্রীর উপর আপনার সম্পূর্ণ নিয়ন্ত্রণ না থাকলে আপনি চালাতে পারেন এমন অনেকগুলি সমস্যা রয়েছে।

এটি লক্ষণীয় যে এই ধরণের কাজটি আবার গবেষণার একটি বর্তমান বিষয়, এটি অসম্পূর্ণ ফলাফল তৈরি করতে পারে।

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