কীভাবে এফএফপিপিগ ব্যবহার করে চিত্রগুলি থেকে একটি ভিডিও তৈরি করবেন?


86

ffmpegসিকোয়েন্সের সেট থেকে কোনও ভিডিও তৈরি করা কি সম্ভব , যেখানে সংখ্যাটি শূন্য থেকে শুরু হয় না?

উদাহরণস্বরূপ, আমার কিছু চিত্র আছে [test_100.jpg, test_101.jpg, test_102.jpg, ..., test_200.jpg] এবং আমি সেগুলিকে একটি ভিডিওতে রূপান্তর করতে চাই। আমি নিম্নলিখিত কমান্ডটি চেষ্টা করেছিলাম, কিন্তু এটি কার্যকর হয়নি (মনে হচ্ছে সংখ্যাটি শূন্য থেকে শুরু হওয়া উচিত):

ffmpeg -i test_% d.jpg -vcodec mpeg4 test.avi

কোন পরামর্শ?


আপনি এটি জিজ্ঞাসা করার পরে এটির একটি সময় হয়েছে, তবে আপনি এখনও যদি প্রশ্নটিতে আগ্রহী হন তবে উত্তরটি হ্যাঁ - আমি নীচে বিশদ এবং একটি উদাহরণ পোস্ট করেছি: stackoverflow.com/a/12160155/181638
আসাদ ইব্রাহিম

এই বিষয়টিকে কেন বন্ধ করা হয়েছে তা সম্পর্কে ধারণা পেতে ক্যাস্পারওন দরকারী হবে। এটি একটি নির্দিষ্ট প্রোগ্রামিং সমস্যার মতো মনে হচ্ছে। এফএফপিপিগ ট্যাগটিতে 3.7k অনুসরণকারী রয়েছে এবং 27 কে মতামত সহ স্পষ্টভাবে লোকেরা এটি দরকারী বলে মনে করেন ..
ভূগোলিক

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

উত্তর:


81

-start_numberস্যুইচটি এর মতো ব্যবহার করা হলে ফাইলগুলির নাম পরিবর্তন করার দরকার নেই :

ffmpeg -start_number n -i test_%d.jpg -vcodec mpeg4 test.avi

nস্থির ক্রমের শুরু কোথায় ।

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

এমন আরও কিছু স্যুইচ রয়েছে যা আপনাকে দরকারী মনে হতে পারে।

আমি ধীর ফ্রেম রেট পেতে এবং চিত্রগুলি সংকুচিত করতে এবং একটি ছোট ফলাফলের ভিডিও পেতে নিম্নলিখিত ওয়ান-লাইনারটি ব্যবহার করি:

ffmpeg.exe -f image2 -framerate 25 -pattern_type sequence -start_number 1234 -r 3 -i Imgp%04d.jpg -s 720x480 test.avi

-r 3বিকল্প প্রতি সেকেন্ডে 3 ফ্রেম ফলে ভিডিওর ফ্রেমরেট সেট করে যাতে আমি সময় একটি অল্প সময়ের জন্য এখনও প্রতিটি দেখতে পারেন। -sবিকল্প কাঙ্ক্ষিত রেজল্যুশন ছবি rescales ফলে ভিডিওর আকার পরিচালনা করতে।

(উইন্ডোজ শেলের মধ্যে প্রতিস্থাপন -i Imgp%04d.jpgসঙ্গে -i "Imgp%%04d.jpg"মাইক ফিত্জপ্যাট্রিক এই জন্য। ক্রেডিট https://superuser.com/a/344178/153054 )


4
-আর-ফ্রেমারেটের মধ্যে পার্থক্য কী?

1
তারা একই আইআইআরসি
রজারডপ্যাক


2
চিত্রগুলির মধ্যে সময়ের ব্যবধান নিয়ন্ত্রণ করার জন্য কি কোনও পরিবর্তন আছে , বলুন, আমি প্রথম চিত্র 13s, দ্বিতীয় 15, তৃতীয়টির জন্য 24 সেকেন্ড প্রদর্শন করতে চাই, সময়ের ব্যবধানটি ব্যবহারকারী সংজ্ঞায়িত করা সম্ভব, এটি কি সম্ভব?
zionpi


38

আপনি নীচে কোড স্নিপেট ব্যবহার করতে পারেন:

 cat *.jpg | ffmpeg -f image2pipe -r 1 -vcodec mjpeg -i - -vcodec libx264 out.mp4

এটি মেটাডাটাতে বর্ণিত ঘোরাঘুরিতে জেপিজি ঘোরান না।
এরিক জোহানসন

17

আপনি ffmpeg ডকুমেন্টেশন একটি উদাহরণ স্ক্রিপ্ট খুঁজে পেতে পারেন :

৩.২ আমি কীভাবে একক ছবি মুভিগুলিতে এনকোড করব?

নতুন নামকরণের জন্য আপনার কাছে যদি প্রচুর পরিমাণে ছবি থাকে তবে বোঝাটি সহজ করার জন্য আপনি নীচের কমান্ডটি ব্যবহার করতে পারেন। বোর্ন শেল সিনট্যাক্স ব্যবহার করে কমান্ডটি বর্তমান ডিরেক্টরিতে থাকা সমস্ত ফাইলকে প্রতীকীভাবে লিঙ্ক করে যা * jpg কে /tmp' directory in the sequence ofimg001.jpg ', `img002.jpg' এবং এর সাথে মেলে ।

x=1; for i in *jpg; do counter=$(printf %03d $x); ln "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done

তারপরে চালান:

ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg

2
আপনি শুরু করতে x = 0 আরও ভাল করে তুলতে চাইবেন তাই এফএফএমপিগের প্রত্যাশাটি যেমন চিত্রটির শুরু img000.jpg। এছাড়াও সিমলিংকিং আমার পক্ষে কার্যকর হয়নি কারণ ffmpeg ফাইলগুলি সন্ধান করতে পারেনি তাই পরিবর্তে আমাকে সিপি ব্যবহার করতে হয়েছিল (স্পষ্ট গতি এবং স্পেস ড্র আঁকতে ব্যাক তবে আমি সেগুলির পরেও আরএম করব)। আপনি যদি মূলগুলি হারাতে আপত্তি না করেন তবে এমভিও কাজ করবে।

মনে রাখবেন যে এই উত্তরে, প্রদত্ত কমান্ডটি সিমলিঙ্কগুলি নয়, হার্ডলিঙ্ক তৈরি করে। cpযদি লিঙ্কিং কাজ না করে তবে আপনার ফাইল সিস্টেমটি যদি এটি সমর্থন করে তবে এর ব্যবহার সম্পর্কে cp --reflink=autoআরও ভাল গতি / স্থান ব্যবহার অর্জন করবে।
ফলিক্স সাপরেলি

12

থেকে ffmpeg এর দস্তাবেজ:

একটি গ্লোব প্যাটার্ন ব্যবহার করে

ffmpeg বাশ-স্টাইলের গ্লোববিংকে সমর্থন করে (* যে কোনও অক্ষরের যে কোনও সংখ্যাকে উপস্থাপন করে)।

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

ffmpeg -r 1 -pattern_type glob -i 'test_*.jpg' -c:v libx264 out.mp4

সুতরাং, যতক্ষণ না আপনার ফাইলগুলি বাছাই করা হয় ততক্ষণ -pattern_type globস্যুইচটি ব্যবহার করা আপনার পক্ষে কাজ করা উচিত।


নোট করুন যে এই গ্লোব নিয়মিত শেল গ্লোবগুলির চেয়ে বেশি সীমাবদ্ধ: trac.ffmpeg.org/ticket/3620 দৃশ্যত কারণ চিত্রের প্রকারটি এক্সটেনশন থেকে বাদ দেওয়া হয়েছে।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

11

যতদূর আমি জানি, আপনি এলোমেলো সংখ্যায় ক্রম শুরু করতে পারবেন না (আমি এটি 0 বা 1 এ শুরু করা উচিত কিনা তা আমি মনে করি না), এর সাথে ফাঁকও থাকতে পারে না, যদি এটি হয় তবে ffmpeg অনুমান করবে যে অনুক্রমটি শেষ হয়েছে এবং আরও ছবি যুক্ত করা বন্ধ করুন।

এছাড়াও, আমার উত্তরের মন্তব্যে যেমন বলা হয়েছে, মনে রাখবেন আপনাকে আপনার সূচকের প্রস্থ নির্দিষ্ট করতে হবে। ভালো লেগেছে:

ছবি% 03d.jpg

এবং যদি আপনি% 03 ডি ইনডেক্স টাইপ ব্যবহার করেন তবে আপনার ফাইলের নামগুলি 0 দিয়ে প্যাড করতে হবে:

image001.jpg image002.jpg image003.jpg

প্রভৃতি


1
যদি চিত্র ফাইলের নামগুলিতে নেতৃস্থানীয় শূন্য থাকে তবে ফর্ম্যাট স্ট্রিংয়ে অবশ্যই "% 03d" এর মতো প্রস্থ নির্দিষ্ট করতে হবে।

1
যদি এটিই একমাত্র বাধা হয়ে থাকে তবে আপনি নিজের চিত্রগুলি পুনরায় নামকরণ করতে বা একটি চিত্রকে সঠিকভাবে পুনঃনির্দেশিত সেটটিতে সিমিলিং করতে কেবল একটি স্ক্রিপ্ট লিখতে পারেন।
ক্যাসকেবেল

1
হ্যাঁ, আমি এটির সাথে আগেও কাজ করেছি, কিছুক্ষণ আগে আমি রুবিতে একটি মোড়ক লিখেছিলাম যেখানে আপনি দৃষ্টান্তটি বলেছেন adএডডিমেজ (), তারপরে উদাহরণ.প্রসেসভিডিও () এবং এটি একটি টেম্পোরাল ডিরেক্টরি তৈরি করবে, যথাযথ সূচকগুলি সহ চিত্রগুলি অনুলিপি / নামকরণ করবে এবং ভিডিও তৈরি করুন। এটা বেশ সহজ।

@ জেফ্রমি আমি একটি সিমিলিংক তৈরি করেছি তবে আমি কীভাবে সিফিলিং ফাইলটি এফএফপিপেতে দেব? এটি কেবল ধরে নিয়েছে যে সিমেলিংক ফাইলটি আমি রূপান্তর করার চেষ্টা করছি সেই চিত্রটি? আমি win7 বিটিডব্লুতে আছি

ক্রমটি 0 থেকে 4 সহ যে কোনও জায়গায় শুরু হতে পারে।
আসাদ ইব্রাহিম

5

আমি ফ্রান্সিসকো এর সাথে একমত, তবে কাজের ভিত্তিতে আপনি এফএফএমপিগের যে সিকোয়েন্স নম্বরগুলির সাথে ফাইলগুলির সিম্বলিক লিঙ্কগুলি সরাতে বা তৈরি করতে একটি দ্রুত স্ক্রিপ্ট লিখতে পারেন। এরপরে স্ক্রিপ্টটি ffmpeg কল করতে পারে এবং তারপরে লিঙ্কগুলি সরাতে বা ফাইলগুলিকে তাদের মূল অবস্থানে ফিরিয়ে আনতে পারে।


1

খুঁজে দেখো

x=1; for i in *jpg; do counter=$(printf %03d $x); ln "$i"
/tmp/img"$counter".jpg; x=$(($x+1)); done

1

আমি জানি এটি একটি পুরানো প্রশ্ন তবে একই উত্তরটি খুঁজতে গিয়ে আমি গুগলে এটি পেয়েছিলাম। এখানে উত্তরগুলির কোনওটিই আমাকে পুরোপুরি সন্তুষ্ট করেনি তাই আমি আরও অনুসন্ধান এবং পড়া করেছি এবং এটি একটি আদেশ যা আমি আমার নিজের সমস্যার জন্য নিয়ে এসেছি।

cat {0032..1501}*.png | ffmpeg -f image2pipe -framerate 5 -i - -s 720x480 test2.avi

আমি এরকম একটি আদেশ ব্যবহার করার কারণটি হ'ল ...

  1. বিড়াল এবং -f চিত্র 2 পাইপ আপনি কী চিত্র ব্যবহার করেন তার উপর আপনাকে আরও ভাল নিয়ন্ত্রণ দেয়। উদাহরণস্বরূপ এটি ব্র্যাশট প্রসারণ এবং গ্রেপের মতো অন্যান্য কমান্ডগুলির মতো বাশ বৈশিষ্ট্যগুলি আপনাকে ব্যবহার করার অনুমতি দেয় যাতে আপনার ফলাফলগুলি বেছে নেওয়া উচিত fine
  2. মনে রাখার মতো কম সুইচস।
  3. আমি -r ব্যবহার না করার পরামর্শ দিচ্ছি এবং এর পরিবর্তে কেবল ফ্রেমারেট ব্যবহার করব। আমার অভিজ্ঞতায় -আর প্রায়শই ফ্রেম বাদ দেয়।
  4. কম জটিল, অপ্রয়োজনীয় সুইচ ব্যবহারে নেই এবং এটি যেমন রয়েছে তেমন কাজ করবে। আপনার প্রয়োজন অনুসারে আপনি আরও জটিলতা (উদাহরণস্বরূপ, এনকোডার নির্দিষ্টকরণ) এবং সূক্ষ্ম সুর যোগ করতে পারেন।

ওপির প্রশ্নের জন্য, এটির জন্য -start_numberপ্রয়োজনীয়।
জ্ঞান

0

আমার ভিডিওটি ফ্ল্যাশ প্লেয়ারে যাওয়ায় আমি ফ্লাভ এনকোডারটি ব্যবহার করেছি (জাওয়প্লেয়ার)

ffmpeg -i% d.jpg -vcodec flv test.flv


0

ডকুমেন্টেশন থেকে মনে হয় আপনি কেবল ব্যবহার করতে পারেন *

For example, for creating a video from filenames matching the glob pattern foo-*.jpeg:

ffmpeg -f image2 -pattern_type glob -framerate 12 -i 'foo-*.jpeg' -s WxH foo.avi

একটি দ্রষ্টব্য হিসাবে, গুণমানকে প্রভাবিত করার জন্য, হার / এফপিএস গুরুত্বপূর্ণ হতে পারে (উদাহরণস্বরূপ, প্রথমে খুব কম / উচ্চ ফ্রেমের হার নির্দিষ্ট করে এবং তারপরে দ্বিতীয় ফিল্টার থেকে পাস হবে যা ধীর গতির ভিডিওটিকে স্বাভাবিক করে তুলবে?)


0

আমার ক্ষেত্রে, ফাইলগুলির সংখ্যার কারণে এটি কিছুটা জটিল ছিল। এখানে আমার চিত্রগুলি দেখতে কেমন:

$ ls | head -5
2014_aq_unprocessed 001.jpg
2014_aq_unprocessed 002.jpg
2014_aq_unprocessed 003.jpg
2014_aq_unprocessed 004.jpg
2014_aq_unprocessed 005.jpg

এবং আমি যে আদেশটি ব্যবহার করেছি তা এখানে:

ffmpeg -i 2014_aq_unprocessed\ %3d.jpg  -vcodec mpeg4 test.avi

0

আপনি এটি দিয়ে এটি করতে পারেন convert -morph:

convert *.jpg -delay 10 -morph 10 %05d.jpg

আপনি যদি ব্যবহার করতে চান ffmpeg, আমি ব্যবহার

ffmpeg -pattern_type glob -i '*.jpg' -vf "setpts=10*PTS" movie.mp4

যেখানে 10*PTSffmpeg 10 বার এটি ধীর করতে বলে। এটির গতি বাড়ানোর জন্য আপনার এখানে ভগ্নাংশ থাকতে পারে।


এটি কেবলমাত্র আপনার আসল চিত্রের ক্রমটিকে একটি নতুন স্পেসে বিভক্ত করছে, এটি ওপি যেমন জিজ্ঞাসা করেছে তেমন কোনও ভিডিও ফাইল তৈরি করে না।
f0ster

0

-pattern_type glob অডিও সহ কংক্রিট উদাহরণ

এই বিকল্পটি এখানে উল্লেখ করা হয়েছিল: https://superuser.com/a/782520/128124 তবে আউটপুট ভিডিওতে অডিও যুক্ত করা সহ এর ব্যবহারের কয়েকটি দৃ concrete় উদাহরণ রয়েছে।

সেকেন্ডে একটি চিত্র সহ স্লাইডশো ভিডিও

ffmpeg -framerate 1 -pattern_type glob -i '*.png' \
  -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

এতে কিছু সংগীত যুক্ত করুন, যখন অডিওগুলি চিত্রগুলি শেষ হয় তখন কাটফফ করুন:

ffmpeg -framerate 1 -pattern_type glob -i '*.png' -i audio.ogg \
  -c:a copy -shortest -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

ইউটিউবে এখানে দুটি ডেমো রয়েছে:

হিপ্পি হোন এবং থিওরা পেটেন্ট-অ-তালিকাবদ্ধ ভিডিও ফর্ম্যাটটি ব্যবহার করুন :

ffmpeg -framerate 1 -pattern_type glob -i '*.png' -i audio.ogg \
  -c:a copy -shortest -c:v libtheora -r 30 -pix_fmt yuv420p out.ogg

আপনার চিত্র অবশ্যই বর্ণমালা অনুসারে বাছাই করা উচিত, সাধারণত:

0001-first-thing.jpg
0002-second-thing.jpg
0003-and-third.jpg

ইত্যাদি।

আরও দেখুন: http://unix.stackexchange.com/questions/68770/converting-png-frames-to-video-at-1-fps/339399#339399

30 এফপিএস এ ফ্রেম প্রতি এক চিত্র সহ সাধারণ গতির ভিডিও

ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
  -c:v libx264 -pix_fmt yuv420p out.mp4

দেখতে দেখতে এটি কী:

জিআইএফ এর সাথে উত্পন্ন: https://askubuntu.com/questions/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574

এটিতে কিছু অডিও যুক্ত করুন:

ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
  -i audio.ogg -c:a copy -shortest -c:v libx264 -pix_fmt yuv420p out.mp4

ফলাফল: https://www.youtube.com/watch?v=HG7c7lldhM4

YouTube আপলোডের জন্য একটি স্থির চিত্র সহ একটি মিউজিক ফাইলকে একটি ভিডিওতে রূপান্তর করুন

এখানে উত্তর দেওয়া হয়েছে: এমপি 3 ইউটিউব-অনুমোদিত ভিডিও ফর্ম্যাটে কীভাবে রূপান্তর করবেন?

কিছু সিন্থেটিক পরীক্ষার ইনপুট চিত্র পান

এই পরীক্ষাগুলি আমি এই উত্তরে ব্যবহার করেছি:

wget -O opengl-rotating-triangle.zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.zip
cd opengl-rotating-triangle
wget -O audio.ogg https://upload.wikimedia.org/wikipedia/commons/7/74/Alnitaque_%26_Moon_Shot_-_EURO_%28Extended_Mix%29.ogg

চিত্রগুলি এর সাথে উত্পন্ন: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292

ভিডিওটি চিত্রের সিক্যুয়েন্সকে জিপের চেয়ে আরও কত ভালভাবে সংক্ষেপিত করে তা পর্যালোচনা করা দুর্দান্ত কারণ এটি বিশেষায়িত অ্যালগরিদমের সাথে ফ্রেমগুলি জুড়ে সংক্ষিপ্ত করতে সক্ষম:

  • opengl-rotating-triangle.mp4: 340 কে
  • opengl-rotating-triangle.zip: 7.3 এম

সিএলআই বিকল্পগুলি সম্পর্কে

তবে নোট করুন যে নামটি সত্ত্বেও, -globএটি শেল গ্লোব প্যাটারগুলির মতো সাধারণ নয়, উদাহরণস্বরূপ: -i '*'ব্যর্থ: https://trac.ffmpeg.org/ticket/3620 (দৃশ্যত কারণ ফাইল টাইপটি এক্সটেনশান থেকে বাদ দেওয়া হয়েছে)।

-r 30তোলে -framerate 1ভিডিও 30 এফপিএস কম ফ্রেমরেটগুলি জন্য ভিএলসি মত খেলোয়াড়দের মধ্যে বাগ পরাস্ত: https://stackoverflow.com/questions/19267443/playback-issues-in-vlc-with-low-fps-video-from-images-using- ffmpeg / 41797724 # 41797724 অতএব এটি প্রতি ফ্রেমের প্রতি পছন্দসই 1 চিত্র রাখতে প্রতিটি ফ্রেম 30 বার পুনরাবৃত্তি করে।

পরবর্তী পদক্ষেপ

আপনি এটি করতে চাইবেন:

টোডো: কমান্ড লাইন থেকে ভিডিওতে একাধিক অডিও ফাইল কাটা এবং সংযোগ করতে শিখুন:

পরীক্ষিত

ffmpeg 3.4.4, vlc 3.0.3, উবুন্টু 18.04।

গ্রন্থ-পঁজী

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