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


163
ffmpeg -r 1/5 -start_number 2 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

এই লাইনটি ভাল কাজ করেছে তবে আমি অন্য ফোল্ডারে চিত্রগুলি থেকে একটি ভিডিও ফাইল তৈরি করতে চাই। আমার ফোল্ডারে চিত্রের নামগুলি হ'ল:

img001.jpg
img002.jpg
img003.jpg
...

আমি কীভাবে কোনও আলাদা ফোল্ডার থেকে চিত্র ফাইলগুলি ইনপুট করতে পারি? উদাহরণ:C:\mypics

আমি এই কমান্ডটি চেষ্টা করেছি তবে কেবল ffmpegপ্রথম চিত্র (img001.jpg) সহ একটি ভিডিও তৈরি করেছি।

ffmpeg -r 1/5 -start_number 0 -i C:\myimages\img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

উত্তর:


167

দেখুন ইমেজ থেকে একটি ভিডিও স্লাইডশো তৈরি করুন - FFmpeg

যদি আপনার ভিডিও যদি ফ্রেমগুলি সঠিকভাবে না দেখায় তবে আপনার যদি সমস্যার মুখোমুখি হয়, যেমন প্রথম চিত্রটি এড়ানো হয় বা কেবল একটি ফ্রেমের জন্য দেখায় তবে আউটপুট ফ্রেমরেটের জন্য -r এর পরিবর্তে fps ভিডিও ফিল্টারটি ব্যবহার করুন

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4

বিকল্পভাবে ফর্ম্যাট ভিডিও ফিল্টারটি "fps = 25, ফর্ম্যাট = yuv420p" এর মতো -pix_fmt yuv420p প্রতিস্থাপন করতে ফিল্টার চেইনে যুক্ত করা যেতে পারে । এই পদ্ধতির সুবিধা হ'ল আপনি কোন ফিল্টারটি প্রথমে যান তা নিয়ন্ত্রণ করতে পারেন

ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4

আমি প্যারামিটারের নীচে পরীক্ষা করেছি, এটি আমার পক্ষে কাজ করেছে

"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4

নীচের প্যারামিটারগুলিও কাজ করে তবে এটি সর্বদা প্রথম চিত্রটি এড়িয়ে যায়

"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4

বিভিন্ন ফোল্ডারে স্থাপন করা চিত্রগুলি থেকে একটি ভিডিও তৈরি করা

প্রথমে নীচের মতো ইমেজপ্যাথস টেক্সটে চিত্রের পাথ যুক্ত করুন ।

# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate

file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'

নীচের হিসাবে নমুনা ব্যবহার;

"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"

-সেফ 0 প্যারামিটারটি অনিরাপদ ফাইলের নাম ত্রুটি প্রতিরোধ করে

সম্পর্কিত লিংক

FFmpeg বিভিন্ন ফোল্ডারে স্থাপন করা চিত্রগুলি থেকে একটি ভিডিও তৈরি করছে

এফএফএমপিইজি একটি মধ্যবর্তী গাইড / চিত্র ক্রম ence

সংমিশ্রণ - এফএফএমপিগ


"যদি আপনার ভিডিওটি ফ্রেমগুলি সঠিকভাবে না দেখায় যদি আপনি সমস্যার মুখোমুখি হন, যেমন প্রথম চিত্রটি এড়ানো হয় বা কেবল একটি ফ্রেমের জন্য দেখানো হয় তবে তার পরিবর্তে fps ভিডিও ফিল্টারটি ব্যবহার করুন" দুঃখিত তবে আপনি কি দয়া করে ব্যাখ্যা করতে পারবেন "fps" ভিডিও ফিল্টার "ঠিক?
arnuschky

3
আমি যতদূর জানি প্যারামিটারটি ভেরিয়েবল ফ্রেম রেট এর অর্থ এফএফএমপিইজি পছন্দসই আউটপুট ফ্রেম হার অর্জন করতে ফ্রেমগুলি ড্রপ বা নকল করতে পারে। এফপিএস ফিল্টার ব্যবহার করে “-vf fps = value” এফএফএমপিইগকে ধ্রুবক ফ্রেম রেট তৈরি করতে বাধ্য করে। চিত্রগুলি থেকে একটি ভিডিও স্লাইডশো তৈরি করুন দেখুন - এফএফম্পেগ , এবং এটি -r এবং fps ফিল্টারের মধ্যে (প্রযুক্তিগত) পার্থক্য কী? । সুতরাং -আর প্যারামিটার ব্যবহার করে মাঝে মাঝে প্রথম চিত্রটি এড়িয়ে যাওয়া হয় ..
খান

এই তালিকার প্রথম কমান্ডটি ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4, কাজ করে দেখে মনে হয়েছিল তবে শেষ পর্যন্ত এমন একটি ভিডিও তৈরি হয়েছিল যা কোনও প্লেয়ার (উবুন্টুতে) দ্বারা অপঠনযোগ্য ছিল। ভিএনসি বলেছিল, "মুভ পরমাণু পাওয়া যায়নি"। সঙ্গে এই প্রতিকার করার চেষ্টা করছেন qt-faststartত্রুটি উত্পাদিত "ফাইলের শেষ পরমাণু নয় moov পরমাণু ছিল"
sh37211

148

-pattern_type glob

এই দুর্দান্ত বিকল্পটি অনেক ক্ষেত্রে চিত্র নির্বাচন করা সহজ করে তোলে।

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

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

ইত্যাদি।

আমি প্রথমে এটিও নিশ্চিত করবো যে সমস্ত চিত্র ব্যবহার করা হবে তার একই দিক অনুপাত রয়েছে, সম্ভবত এগুলি আগে imagemagickবা নোম্যাকের সাথে ক্রপ করে, যাতে ffmpeg কঠোর সিদ্ধান্ত নিতে না পারে। বিশেষত, প্রস্থটি 2 দ্বারা বিভাজ্য হতে হবে, অন্যথায় রূপান্তরটি ব্যর্থ হয়: "প্রস্থ 2 দিয়ে বিভাজ্য নয়"।

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

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

এটি দেখতে কেমন দেখাচ্ছে তা এখানে:

জিআইএফ এর সাথে উত্পন্ন: /ubuntu/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

এগুলি আমি ব্যবহার করেছি টেস্ট মিডিয়া: ক

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

এর সাথে উত্পন্ন চিত্রগুলি: কোনও ফাইলকে রেন্ডার করতে কীভাবে GLUT / OpenGL ব্যবহার করবেন?

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

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

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

এর উত্তর দেওয়া হয়েছে: https://superuser.com

সম্পূর্ণ বাস্তবসম্মত স্লাইডশো কেস স্টাডি সেটআপ ধাপে ধাপে

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

ইনপুট মিডিয়া পান:

mkdir -p orig
cd orig
wget -O 1.png https://upload.wikimedia.org/wikipedia/commons/2/22/Australopithecus_afarensis.png
wget -O 2.jpg https://upload.wikimedia.org/wikipedia/commons/6/61/Homo_habilis-2.JPG
wget -O 3.jpg https://upload.wikimedia.org/wikipedia/commons/c/cb/Homo_erectus_new.JPG
wget -O 4.png https://upload.wikimedia.org/wikipedia/commons/1/1f/Homo_heidelbergensis_-_forensic_facial_reconstruction-crop.png
wget -O 5.jpg https://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Sabaa_Nissan_Militiaman.jpg/450px-Sabaa_Nissan_Militiaman.jpg
wget -O audio.ogg https://upload.wikimedia.org/wikipedia/commons/7/74/Alnitaque_%26_Moon_Shot_-_EURO_%28Extended_Mix%29.ogg
cd ..

# Convert all to PNG for consistency.
# /unix/29869/converting-multiple-image-files-from-jpeg-to-pdf-format
# Hardlink the ones that are already PNG.
mkdir -p png
mogrify -format png -path png orig/*.jpg
ln -P orig/*.png png

চূড়ান্ত দিক অনুপাত সম্পর্কে সিদ্ধান্ত নিতে এখন আমাদের কাছে সমস্ত চিত্রের মাপের তাত্পর্য রয়েছে:

identify png/*

কোন ফলাফল:

png/1.png PNG 557x495 557x495+0+0 8-bit sRGB 653KB 0.000u 0:00.000
png/2.png PNG 664x800 664x800+0+0 8-bit sRGB 853KB 0.000u 0:00.000
png/3.png PNG 544x680 544x680+0+0 8-bit sRGB 442KB 0.000u 0:00.000
png/4.png PNG 207x238 207x238+0+0 8-bit sRGB 76.8KB 0.000u 0:00.000
png/5.png PNG 450x600 450x600+0+0 8-bit sRGB 627KB 0.000u 0:00.000

সুতরাং ক্লাসিক 480 পি (640x480 == 4/3) দিক অনুপাত উপযুক্ত বলে মনে হচ্ছে।

প্রস্থকে আরও কমিয়ে আনতে নূন্যতম আকারের সাথে একটি রূপান্তর করুন (যেকোন প্রস্থের জন্য টোডো স্বয়ংক্রিয় করুন, এখানে আমি কেবল ম্যানুয়ালি identifyআউটপুটকে দেখেছি এবং প্রস্থ এবং উচ্চতা এক এক করে কমিয়েছি):

mkdir -p raw
convert png/1.png -resize 556x494 raw/1.png
ln -P png/2.png png/3.png png/4.png png/5.png raw
ffmpeg -framerate 1 -pattern_type glob -i 'raw/*.png' -i orig/audio.ogg -c:v libx264 -c:a copy -shortest -r 30 -pix_fmt yuv420p raw.mp4

এটি ভয়াবহ আউটপুট উত্পাদন করে, কারণ এটি থেকে দেখা গেছে:

ffprobe raw.mp4

ffmpeg কেবল প্রথম চিত্রটির আকার নেয় 556x494, এবং তারপরে অনুপাতের অনুপাতটি ভেঙে অন্য সকলকে সেই সঠিক আকারে রূপান্তরিত করে।

এবার আসুন ইমেজম্যাগিক অনুযায়ী ক্রপিংয়ের মাধ্যমে চিত্রগুলি স্বয়ংক্রিয়ভাবে 480p অ্যাসপেক্ট রেশিওতে রূপান্তরিত করুন : কীভাবে একটি চিত্রকে ন্যূনতমভাবে একটি নির্দিষ্ট দিক অনুপাতে কাটা যায়?

mkdir -p auto
mogrify -path auto -geometry 640x480^ -gravity center -crop 640x480+0+0 png/*.png
ffmpeg -framerate 1 -pattern_type glob -i 'auto/*.png' -i orig/audio.ogg -c:v libx264 -c:a copy -shortest -r 30 -pix_fmt yuv420p auto.mp4

সুতরাং এখন, অনুপাতের অনুপাতটি ভাল, তবে অবশ্যম্ভাবীভাবে কিছু শস্য কাটতে হয়েছিল, যা ধরণের চিত্রগুলির আকর্ষণীয় অংশগুলি কাটাতে পারে।

অন্য বিকল্পটি হ'ল কালো ব্যাকগ্রাউন্ডের সাথে প্যাড করা একই ধরণের অনুপাত হিসাবে দেখানো হয়েছে: একটি বাক্সে ফিট করার জন্য পুনরায় আকার দিন এবং "খালি" অংশে কালোতে ব্যাকগ্রাউন্ড সেট করুন

mkdir -p black
ffmpeg -framerate 1 -pattern_type glob -i 'black/*.png' -i orig/audio.ogg -c:v libx264 -c:a copy -shortest -r 30 -pix_fmt yuv420p black.mp4

যদিও সাধারণভাবে বলতে গেলে, আপনি প্রথমে এই সমস্যাগুলি এড়াতে আদর্শ বা অনুরূপ দিক অনুপাত সহ চিত্র নির্বাচন করতে সক্ষম হবেন।

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

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

-r 30তোলে -framerate 1: ভিডিও 30 এফপিএস কম ফ্রেমরেটগুলি জন্য ভিএলসি মত খেলোয়াড়দের মধ্যে বাগ পরাস্ত ভিএলসি কম 1 FPS যে ffmpeg দিয়ে ইমেজ ব্যবহার করে তৈরি ভিডিওর জন্য স্থির অতএব প্রতিটি ফ্রেম পুনরাবৃত্তি 30 বার দ্বিতীয় প্রভাব প্রতি 1 ইমেজ আকাঙ্ক্ষিত রাখা।

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

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

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

পরীক্ষিত

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

গ্রন্থ-পঁজী


আপনি যদি ffmpeg শুরু করতে পাইথন এবং সাবপ্রসেসকল সব ব্যবহার করেন 'তবে আপনার ইনপুট এবং আউটপুট ফাইলের নামের একক উদ্ধৃতি ব্যবহার করা উচিত নয় । অন্যথায় এটি ফাইলগুলি খুঁজে পাবেন না।
রানওরভিথ

এটি আমার পক্ষে দুর্দান্ত হবে তবে এনপিএম প্যাকেজ থেকে আমার বিল্ড গ্লোব ffmpeg-staticবাস্তবায়ন করে না। ( Pattern type 'glob' was selected but globbing is not supported by this libavformat build)
সেবি

-pix_fmtসৃষ্ট Trailing options were found on the commandline.ত্রুটি
এন্থনি কং

ffmpeg -framerate 1 -pattern_type glob -i '*.png' -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4@ অ্যান্থনিকং আমি উবুন্টুন 19.10 এ পুনরায় উত্পাদন করতে পারিনি ffmpeg 4.1.4 এখনই, আপনার সংস্করণ এবং সঠিক আদেশটি কী?
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

20

ডক্স থেকে সাধারণ সংস্করণ

গুগল আর্থ স্টুডিও চিত্রগুলির জন্য বিশেষত দুর্দান্ত কাজ করে :

ffmpeg -framerate 24 -i Project%03d.png Project.mp4

1
এই আউটপুটটি প্লে করতে পারবেন না: [h264 @ 0x7f148cc3cc40] হার্ডওয়্যার এক্সিলারেটর ছবিটি ডিকোড করতে ব্যর্থ হয়েছে
ব্রাম

হাই, আমি কীভাবে এই আদেশটি কার্যকর করতে পারি আমি কেবল এটির সন্ধান করছি যা আপনি দয়া করে আমাকে সহায়তা করতে পারেন?
নির্দোষ

@ আপনার টার্মিনাল বা কনসোল থেকে নিরপেক্ষ
জোশুয়া পিন্টার

এটি মানুষ পেয়েছে তবে প্রকল্প% 3d.png আমার সমস্ত চিত্রগুলি প্রজেক্ট001.png, প্রকল্প002.png নামে একটি ফোল্ডারে বাছাই করে নি এবং আমার ছবিগুলি পেতে এবং ভিডিওতে রূপান্তর করতে আমার কী করা উচিত তা কেবল 2 টি ছবি পেতে পারে
নির্দোষ

আপনি ব্যবহার করছেন %3dবা %03d?
জোশুয়া পিন্টার

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