বিভিন্ন সময়সীমার সাথে এফএফএমপিইগ চিত্রের ক্রম


16

ধরা যাক আমার কাছে 1 মিনিটের দৈর্ঘ্যের একটি এমপি 3 ফাইল রয়েছে। এবং আমি 20 পিএনজি ইমেজ আছে। আমি এই চিত্রগুলি এবং একটি অডিওকে একটি ভিডিও ফাইলে একত্রিত করতে চাই, তবে আমি চাই না যে প্রতিটি চিত্র পর্দায় 3 সেকেন্ড স্থায়ী হয়, আমি কিছু চিত্র 5 সেকেন্ড স্থায়ী রাখতে চাই, অন্যরা 1 সেকেন্ড ইত্যাদি etc.

আমি কেবলমাত্র ভাবতে পারি কেবলমাত্র সেই চিত্রগুলি অনুলিপি করা যা আরও বেশি সময় ধরে চলতে পারে, যেমন ইমেজ 1, ইমেজ 2, ইমেজ 3 একই হতে পারে, এটি আমাকে ভিডিওতে 3x আরও বেশি সময় দেয়।

তবে এটি খুব সময় এবং স্থান ব্যয়কারী। Ffmpeg এ এমন কোনও স্যুইচ / প্যারামিটার আছে যা আমাকে এটি করতে দেয়?


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

আমি এটি পিএইচপি স্ক্রিপ্ট থেকে করছি, তাই সম্পাদক আমি যা খুঁজছি তা নয়।
ফ্লোট ২০১১

উত্তর:


21

Ffmpeg 2.0 ব্যবহার করার জন্য কয়েকটি উপায় আছে:

  1. একটি পদ্ধতি ফাইল পরিবর্তন সময় ব্যবহার করা হয়। প্রথমে চিত্র ফাইলগুলির পরিবর্তনের সময়টি সেট করুন যাতে প্রতিটি চিত্রের ফাইলের পরিবর্তনের সময়টি তার আগের সময়ের চেয়ে বেশি হয়; সময়ের পার্থক্য হ'ল পূর্ববর্তী চিত্রটির সময়কাল (1 দ্বিতীয় রেজোলিউশন সহ)। তারপরে ইমেজ 2 ডেমাক্সার অপশনটি ব্যবহার করুন -ts_from_file 1। উদাহরণ স্বরূপ:

    touch -t 01010000.00 image01.png
    touch -t 01010000.03 image02.png
    touch -t 01010000.08 image03.png
    ...
    ffmpeg -ts_from_file 1 -i image%2d.png -i audio.mp3 -c:a copy -vf fps=25 out.avi
    
  2. আরেকটি পদ্ধতি হ'ল concatডেমাক্সার ব্যবহার করা , যা atenচ্ছিক সময়সীমা সহ কনটেনেট করার জন্য ফাইলগুলির একটি তালিকা নেয়। প্রথমে আপনার চিত্র এবং সময়কালগুলি দেখে মনে হচ্ছে এমন একটি ফাইল তৈরি করুন:

    ffconcat version 1.0
    file image01.png
    duration 3
    file image02.png
    duration 5
    file image03.png
    

    তারপরে এই ফাইলটিকে ffmpeg ইনপুট হিসাবে সরবরাহ করুন। উদাহরণ স্বরূপ:

    ffmpeg -i in.ffconcat -i audio.mp3 -c:a copy -vf fps=25 out.avi
    

চূড়ান্ত সময়কালের পরে আপনাকে শেষ ফাইলটি নকল করতে হবে। -c:a copyএমপি 3 অডিওকে অনুলিপি করে; আপনি যদি এটি অন্য অডিও কোডকে রূপান্তর করতে চান তবে আপনি এটির পরিবর্তে নির্দিষ্ট করতে পারেন copy। এছাড়াও আপনি সঙ্গে একটি ভিন্ন ভিডিও কোডেক উল্লেখ করতে চাইতে পারেন -c:vবা একটি ভিন্ন পিক্সেল ফরম্যাট -pix_fmtযেমন -c:v libx264 -pix_fmt yuv420p-vf fps=25আউটপুট ফ্রেম রেট 25 fps তৈরি করবে। যদি আপনার অডিওটি দীর্ঘ হয় এবং আপনি চিত্রগুলির পরে এটি কেটে দিতে চান তবে -shortestবিকল্পটি ব্যবহার করুন ।


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

@ সাপ: এটি এখনও আমার পক্ষে কাজ করে। ভিডিওটি যদি কালো হয় তবে আপনার প্লেয়ার আপনি যে ভিডিও ফর্ম্যাটটি ব্যবহার করছেন তা সমর্থন করতে পারে না; -c:v libx264 -profile:v baseline -pix_fmt yuv420p out.mp4আউট.এবির পরিবর্তে চেষ্টা করুন , বা এমপিভি বা এফএফপ্লে এর মতো আলাদা প্লেয়ার ব্যবহার করে দেখুন। এছাড়াও নিশ্চিত হয়ে নিন যে আপনি এফএফম্পেগের একটি বর্তমান সংস্করণ ব্যবহার করছেন, এবং চূড়ান্ত সময়কালের পরে শেষ চিত্রের ফাইলটির নকল করুন।
4o

এইচএম, অদ্ভুত, আপনি এমপিভি এবং ffmpeg স্ট্যাটিক বিল্ডটি ffmpeg.org থেকে ডাউনলোড করেছেন এবং এটি কেবল সময়কালগুলি উপেক্ষা করে। যাই হোক, আমি অন্য উপায় কিভাবে এই কাজ করতে পাওয়া যায় নি, তাই এটি নয় যে গুরুত্বপূর্ণ: ffmpeg.org/pipermail/ffmpeg-user/2015-July/027702.html
চুমুক দিয়া পান

1

অভিমানী ffmpeg -i in.ffconcat -vf fps=25 out.avi

(2018: in.ffconcat ফাইল সামগ্রী) - এটি কাজ করে:

ffconcat সংস্করণ 1.0
ফাইল text.png
সময়কাল 30.0
ফাইল text.png

যখন এটি না

ffconcat সংস্করণ 1.0
ফাইল text.png
সময়কাল 30.0

অর্থাত্ দ্বিতীয় ক্ষেত্রে

ffprobe out.avi -show_entries format=duration -v 0

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