7 টি এফপিএস থেকে তোলা ছবি থেকে 30 এফপিএসে কীভাবে একটি ভিডিও এনকোড করা যায়


21

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

এই উদ্দেশ্যে আমি ffmpeg এই মত ব্যবহার

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

যা এই সাইট থেকে নেওয়া হয়েছিল , তবে আমি ভাবছিলাম যে 30 এফপিএস এ অ্যানিমেশন দেখায় এমন কোনও ভিডিও পাওয়া কি সম্ভব?



-framerateপছন্দসই ফলাফলগুলি পেতে প্যারামিটারটিকে কেবল টুইঙ্ক করুন ।
নাল্ট্পটার

উত্তর:


21

আমি একই জিনিস করতে নীচের কোডটি ব্যবহার করছি।

ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -pix_fmt yuv420p -crf 23 output.mp4

কমান্ড ভঙ্গ:

ffmpeg             <- call ffmpeg
  -framerate 30    <- set the input framerate to 30
  -i img%03d.png   <- read PNG images with filename img001, img002, img003, etc..
                     img can be changed to another prefix
                     %03d can be changed to %04d for 0001, %05d for 00001 formats, etc...
  -c:v libx264     <- Set the codec to libx264
  -pix_fmt yuv420p <- Set the pixel format to planar YUV 4:2:0, 12bpp
  -crf 23          <- set the Constant Rate Factor to 23 (default value)
  -output.mp4      <- the output filename

এটি 30 fps ( -framerate 30বিকল্প) এ ইনপুটটি পড়ে এবং 23 এর ধ্রুবক হারের ফ্যাক্টর ( বিকল্প) libx264সহ কোডেক ব্যবহার করে এটিকে এনকোড করে ।-crf 23


26

দুটি ফ্রেম রেট বিবেচনা করতে হবে: ইনপুট এবং আউটপুট।

ডিফল্টরূপে ইনপুট ফ্রেমের হার 25 হয় এবং আপনি অন্যথায় না বললে আউটপুট ইনপুট হিসাবে একই ফ্রেম রেট ব্যবহার করবে।

ইনপুট এবং আউটপুট জন্য একই ফ্রেম হার

আপনি ইনপুট করতে চান, এবং একই ফ্রেম রেট আছে আউটপুট হয় তাহলে, শুধুমাত্র ইনপুট ফ্রেম রেট প্রদান। এই উদাহরণটি 30000/1001 (এনটিএসসি ভিডিও) এর একটি ফ্রেম রেট নির্ধারণ করবে:

ffmpeg -framerate 30000/1001 -i input output.mp4
  • বিকল্প হিসাবে, এই উদাহরণে, আপনি এর ntscপরিবর্তে ব্যবহার করতে পারেন 30000/1001, তবে ব্যবহার করবেন না 29.97কারণ এটি সঠিক বা সঠিক নয়। অন্যান্য ফ্রেমের হারের উপকরণ দেখুন ।

  • কারণ ডিফল্ট ইনপুট ফ্রেমের হার 25, এবং যদি আপনি কেবলমাত্র একটি আউটপুট ফ্রেম হার সেট করেন, তবে ক্ষতিপূরণ দেওয়ার জন্য ফ্রেমগুলি বাদ দেওয়া হবে বা নকল হবে। এজন্য ইনপুট ফ্রেম রেট এই পরিস্থিতিতে সেট করা আছে।

ইনপুট এবং আউটপুট জন্য বিভিন্ন ফ্রেম হার

কখনও কখনও আপনি ইনপুট ফ্রেম হার এবং আউটপুট ফ্রেম হার পৃথক করতে পারেন। উদাহরণস্বরূপ, আপনি একটি নির্দিষ্ট হারে ফ্রেমগুলি ইনপুট করতে চাইতে পারেন এবং তারপরে ফ্রেমের ডুপ্লিকেট বা ড্রপ করতে পারেন যাতে আউটপুটটির আলাদা ফ্রেমের হার থাকে। আপনার আউটপুট ফর্ম্যাট ধারক, আপনার প্লেয়ার এবং / অথবা আপনার ডিভাইসের সাথে সামঞ্জস্যতার সমস্যার কারণে আপনি এটি করতে চাইতে পারেন:

ffmpeg -framerate 10 -i input -r 25 output.mp4
  • এই উদাহরণে ফ্রেমগুলি 10 থেকে 25 পর্যন্ত যেতে নকল হবে। ফ্রেমগুলি বাদ দেওয়া বা নকল করা হচ্ছে কিনা কনসোল আউটপুট আপনাকে জানাবে।

  • ইমেজ ফাইল ডিমাক্সার ব্যবহারসমূহ -framerate, আউটপুট ফ্রেম রেট ব্যবহার সেট করা হয় যখন -r

  • আপনি -pix_fmt yuv420pযদি H.264 ভিডিও আউটপুট করছেন তবে আপনাকে কিছু পরিস্থিতিতে বিকল্পটি যুক্ত করতে হতে পারে ( ffmpegআপনার যদি প্রয়োজন না হয় তবে কনসোল আউটপুট আপনাকে সতর্ক করবে)। এটি একটি ক্রোমা সাবসাম্পলিং স্কিম ব্যবহার করবে যা সমস্ত খেলোয়াড়ের সাথে সামঞ্জস্যপূর্ণ।


2
ffmpeg সংস্করণ 3.2.2 আমাকে বলে: Option framerate not found.:-(
এরিক

হ্যাঁ তুমিই ঠিক. তবে তবুও বিকল্পটির -framerateঅস্তিত্ব নেই। আমি আমার মন্তব্যটি মুছে ফেলব, কারণ এটি নির্দিষ্ট ফ্রেমরেট সহ কোনও ভিডিওতে সিরিজ চিত্রের রূপান্তর করার সাথে আসলেই কিছুই করার নেই।
এরিক

4
@ এরিকের -framerateঅস্তিত্ব আছে। এটি চিত্র এবং কাঁচাভিডিও ডেমাক্সার এবং কিছু ইনপুট ডিভাইস যেমন এক্স 11 গ্র্যাব এবং ভি 4 এল 2 দ্বারা ব্যবহৃত হয়।
ইন

1
বিকল্পটি -framerateনথিভুক্ত কোথায় ? আমি man ffmpegপৃষ্ঠাটি পড়েছি , কিন্তু এটি খুঁজে পেলাম না। কোন পয়েন্টার, সম্ভবত?
অ্যাটকোল্ড

1
ঠিক আছে, এটি পাওয়া ... FFMPEG-DEVICES(1)
এটকোল্ড

1
ffmpeg -framerate 30 -i img%03d.png output.mp4  

ffmpeg এর সর্বশেষতম সংস্করণে যথেষ্ট হবে।

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