Ffmpeg সহ একটি এমপি 4 ভিডিওর ফ্রেম রেট পরিবর্তন করুন


8

আমার এমপি 4 ফর্ম্যাটে একটি ভিডিও রয়েছে যার ফ্রেম রেট .33(3 সেকেন্ডের জন্য 1 ফ্রেম)। আমি ফ্রেম রেট 5 ফ্রেম / সেকেন্ডে বাড়িয়ে দিতে চাই। আমি নীচের আদেশটি চেষ্টা করেছি তবে এটি কোনও কাজ করে না:

ffmpeg -i <input.mp4> -r 5 <output.mp4>

কোনও ধারণা কেন ffmpeg -rবিকল্প উপেক্ষা করছে ?


আপনি গতি বাড়াতে চেষ্টা করছেন তবে / একটি ভিডিও মন্থর নিচে, ডুপ্লিকেট / ড্রপ ফ্রেম পরিবর্তে দেখতে superuser.com/questions/854753/... এবং / অথবা askubuntu.com/questions/370692/...
পিটার Cordes

উত্তর:


7

আমি জানি এটি একটি পুরানো প্রশ্ন তবে বর্তমানের উত্তরগুলির কোনওটিই আর প্রস্তাবিত উপায় নয়।

ক্ষতিহীন (ভিডিও) রিম্যাক্সিং

মন্তব্যে উল্লিখিত হিসাবে এটি করার একটি উপায় রয়েছে যেখানে ভিডিওটি পুনরায় এনকোড করতে হবে না । এটি প্রয়োজন remuxing একটি ভিন্ন containter বিন্যাস MKV ফাইল এবং তারপর এটি একটি আছে MP4 ফিরে remuxing। এখানে একটি উদাহরণ যা একটি ভিডিওকে 12 ফ্রেম / সেকেন্ডে পরিবর্তিত করে:

mkvmerge --default-duration 0:12fps --fix-bitstream-timing-information 0 original-video.mp4 -o temp-video.mkv
ffmpeg -i temp-video.mkv -c:v copy slow-video.mp4

ভিডিও অডিও ধারণ করেন তাহলে আপনি পিচ পরিবর্তন না করে যে মন্দীভূত পারে, কিন্তু তা না হয় না একটি অবচয়হীন রূপান্তর। নীচের উদাহরণটি ধরে নেওয়া হয়েছে উত্স ভিডিওটি 24 ফ্রেম / সেকেন্ড ছিল যাতে ffmpeg এর এটেম্পো ফিল্টার ব্যবহার করে অডিওটিকে অর্ধেক (0.5) গতি করতে হবে ।

mkvmerge --default-duration 0:12fps --fix-bitstream-timing-information 0 original-video.mp4 -o temp-video.mkv
ffmpeg -i temp-video.mkv -c:v copy -c:a aac -filter:a "atempo=0.5" slow-video-with-audio.mp4

এফএফএমপিইগ উইকি গাইডেন্স

এটি ffmpeg উইকির দিকনির্দেশনা । মনে রাখবেন যে এই সমস্ত বিকল্পের জন্য ভিডিওটিকে পুনরায় এনকোডিং করা দরকার।

ভিডিও গতি বাড়িয়ে / কমিয়ে দিচ্ছে

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

ভিডিওর গতি দ্বিগুণ করতে আপনি ব্যবহার করতে পারেন:

ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv

ফিল্টার প্রতিটি ভিডিও ফ্রেমের উপস্থাপনা টাইমস্ট্যাম্প (পিটিএস) পরিবর্তন করে কাজ করে। উদাহরণস্বরূপ, যদি টাইমস্ট্যাম্পগুলি 1 এবং 2 তে প্রদর্শিত দুটি সফল ফ্রেম থাকে এবং আপনি ভিডিওটি দ্রুত করতে চান তবে সেই টাইমস্ট্যাম্পগুলি যথাক্রমে 0.5 এবং 1 হওয়া দরকার। সুতরাং, আমাদের সেগুলি 0.5 দ্বারা গুণতে হবে।

নোট করুন যে এই পদ্ধতিটি পছন্দসই গতি অর্জনের জন্য ফ্রেমগুলি নামবে। আপনি ইনপুট থেকে উচ্চতর আউটপুট ফ্রেমের হার নির্দিষ্ট করে ফেলে দেওয়া ফ্রেমগুলি এড়াতে পারবেন। উদাহরণস্বরূপ, 4 টি এফপিএসের ইনপুট থেকে 4x অবধি বেড়ে যাওয়া এক (16 এফপিএস) এ যাওয়ার জন্য:

ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25*PTS" output.mkv

আপনার ভিডিওটি ধীর করতে, আপনাকে 1: এর চেয়ে বেশি গুণক ব্যবহার করতে হবে

ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv

মসৃণ

আপনি মিনিটারপোলেট ভিডিও ফিল্টার দিয়ে ধীর / দ্রুত ভিডিও মসৃণ করতে পারেন। এটি "মোশন ইন্টারপোলেশন" বা "অপটিক্যাল প্রবাহ" নামেও পরিচিত।

ffmpeg -i input.mkv -filter "minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120'" output.mkv

অন্যান্য বিকল্পের মধ্যে স্লোমোভিডিও এবং বাটারফ্লো অন্তর্ভুক্ত রয়েছে। অডিওকে গতি বাড়িয়ে / গতি কমিয়ে দিচ্ছে

অ্যাটেম্পো অডিও ফিল্টারটি দিয়ে আপনি অডিও গতি বা কমিয়ে দিতে পারেন। অডিওর গতি দ্বিগুণ করতে:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

এটেম্পো ফিল্টারটি 0.5 এবং 2.0 এর মধ্যে মানের ব্যবহারের মধ্যেই সীমাবদ্ধ (সুতরাং এটি এটিকে আদি গতির অর্ধেকের চেয়ে কম করতে পারে না এবং ইনপুটের দ্বিগুণের চেয়ে গতি বাড়িয়ে দেয়)। আপনার যদি প্রয়োজন হয়, আপনি একসাথে একাধিক অ্যাটেম্পো ফিল্টারগুলি স্ট্রিং করে এই সীমাবদ্ধতাটি পেতে পারেন। চতুর্মুখী অডিও গতি সহ নিম্নলিখিত:

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

একটি জটিল ফিল্টারগ্রাফ ব্যবহার করে, আপনি একই সময়ে ভিডিও এবং অডিও গতি বাড়িয়ে দিতে পারেন:

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

1
কেবল রিম্যাক্স করে গতি / ধীর করা সম্ভব, তবে এফএফম্পেগ এটি কীভাবে করবেন তা জানেন না । উদাহরণস্বরূপ, এমকেভি এর জন্য, এমকেভিটোলনিক্স এটি করতে পারে। যেমন mkvmerge --default-duration 0:24000/1001fps --fix-bitstream-timing-information 0 in.mkv -o out.mkv এমকেভি পাত্রে ফ্রেমরেট পরিবর্তন করুন । আপনি এমকেভিতে এবং এমপি 4-এ ফিরে আসতে পারেন বা এমপি 4 এর জন্য সরাসরি এমন একটি সরঞ্জাম পেয়েছেন। ভিডিওটির এক্সকোডিং খুব সিপিইউ-নিবিড় এবং ক্ষয়ক্ষতিযুক্ত, সুতরাং এটি একটি ভয়াবহ বিকল্প।
পিটার কর্ডেস

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

6

যদি ইনপুট ফাইলে কোনও বৈধ ফ্রেম রেট না থাকে আপনি এটি পরিষ্কারভাবে সেট করতে পারেন

ffmpeg -r 1 -i input.mp4 -r 24 output.mp4

আপনার ট্রান্সকোডগুলি যখন আপনার সত্যিই কেবল পুনরায় চালু করতে হয়। (আপনি যদি ভিডিওটি গতি কমিয়ে / গতি বাড়ানোর পরিবর্তে ফ্রেমগুলি সদৃশ / ড্রপ করতে চান না)
পিটার কর্ডেস

3

ইনপুট ফাইলটিকে "কাঁচা" ফাইল হিসাবে শ্রেণিবদ্ধ করা হলে আমি কেবল পরিবর্তিত ফ্রেমরেটটি কার্যকর করতে পেরেছিলাম:

ffmpeg -r 5 -f h264 -i input.h264 -vcodec copy -an output.mkv

নির্দিষ্ট না করে -f h264এটি ডিফল্ট 25 fps হবে এবং এটি পরিবর্তন করা যাবে না। স্পষ্টতই এটি কারণ স্ট্রিমের কোনও ফ্রেমরেট তথ্যের অভাব ছিল এবং এটি ffmpeg এর ডিফল্ট ফ্রেমরেট।

স্পষ্টতই আপনি যখন -rআউটপুট বিকল্প হিসাবে ব্যবহার করেন তখন এটি ফ্রেমের ডুপ্লিকেট বা ড্রপ করে যাতে ভিডিওটি একই গতিতে খেলতে পারে - এই ক্ষেত্রে আপনি যা চান তা নয়! তবে উপরের হিসাবে ইনপুট ফ্রেমরেট পরিবর্তন করার ফলে ভিডিওটির গতি বা ধীর হয়ে যাবে, কোনও ফ্রেম হারিয়ে বা নকল না হয়ে।


1
আমার দরকারী উত্তর। এখানে পুনরায় এনকোডিং নেই
yota

1

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

আপনি মেনে চলতে চান কারণ আপনি কেবল ফ্রেমরেট পরিবর্তন করতে চান তবে ffmpeg -rনীরবে উপেক্ষা করেফ্রেমরেট যদি ইনপুট ফাইলে নির্দিষ্ট করা থাকে। যেহেতু আপনার ইনপুট ফাইলটি এমপি 4 ফর্ম্যাটে রয়েছে তাই এর নিজস্ব ফ্রেমরেটটি প্রাধান্য পাবে-rযখন পুনরায় এনকোডের প্রয়োজন হয় না। এর জন্য আপনার একটি আলাদা সরঞ্জাম প্রয়োজন: মেনকোডার।

ধরে নিলাম আপনার ইনপুট ফাইলটিতে কোনও শব্দ নেই - .৩৩ ফ্রেমরেটযুক্ত কোনও ভিডিওর পক্ষে সম্ভবত সত্য - আপনার যা প্রয়োজন তা হ'ল:

$ mencoder -fps 5 -o <output> -ovc copy -nosound <input.mp4>

লক্ষ্য করুন যে মেনকোডারটি ডিফল্টরূপে এভিআই ফর্ম্যাটে আউটপুট দেয়।


1
এটা ভুল. যদি rআউটপুট সুইচ হিসাবে নির্দিষ্ট করা থাকে, তবে ffmpeg ইনপুটটির ফ্রেমরেট নির্বিশেষে নির্দিষ্ট ফ্রেমরেটে একটি আউটপুট উত্পাদন করে। যদি rইনপুট সুইচ হিসাবে নির্দিষ্ট করা থাকে তবে ffmpeg ফিল্টার / এনকোডারটিতে প্রতি সেকেন্ডে ফ্রেমের নির্দিষ্ট সংখ্যাকে ফিড দেওয়ার জন্য প্রয়োজন হিসাবে ফ্রেমগুলি সদৃশ বা ড্রপ করে।
জ্ঞান

rইনপুট স্যুইচ করার সময় আপনি যে আচরণটি বর্ণনা করেন তা আমার এমপি 4 ফর্ম্যাট, মালভিনিয়াস নোট (এই পৃষ্ঠায়) এবং বাগের বিবরণ 403 trac.ffmpeg.org/ticket/403 এর সাথে আমার পূর্ববর্তী পরীক্ষার সাথে বিরোধী ; আপনার বর্ণনাটি যখন rআউটপুটটিতে ব্যবহৃত হয় তখন পুনরায় এনকোডিংয়ের সময় ঘটে, যখন ওপি এর দৃশ্যপটটি তাঁর কাছে .৩৩ ফ্রেমরেট ছিল বলে সত্য অনুসারে (পুনরায় এনকোডিং ছাড়াই ফ্রেমরেট ঠিক করুন) বলে মনে হয়।
ট্যাঙ্কম্যান

1
চেক রিপোর্ট এখানে আটকানো হয়েছে । শীর্ষে কমান্ড লাইনটি, ইনপুট এবং আউটপুট মেটাডেটা এবং শেষ পর্যন্ত নোট করুন। এনকোডযুক্ত ফ্রেমের।
জ্ঞান

1
সম্মত হয়েছে যে ওপি কেবল ফাইলের সাথে সামঞ্জস্য করতে চায় তবে তাদের প্রদত্ত আদেশটি পুনরায় এনকোডিং করছে যেহেতু অনুলিপি সুইচ (এস) নির্দিষ্ট করা হয়নি। সেই পরিস্থিতিতে, ffmpeg এফপিএসে নতুন স্ট্রিম তৈরি করা উচিত r
জ্ঞান

বিশ্বাসী নমুনা আউটপুট জন্য আপনাকে Mulvya ধন্যবাদ। হ্যাঁ, আপনি সঠিকভাবে ব্যবহার করছেন -r। ওপির প্রতিক্রিয়াতে এই ব্যবহারটি আমার আগের পরীক্ষাগুলিকে প্রভাবিত করতে পারে না কারণ মেনে চলা মামলার কথা চিন্তা করে, আমি কখনই ffmpeg থেকে অনুলিপি প্যারামিটার বাদ দেয়নি এবং -rএইভাবে উপেক্ষা করা হয়। আমি একটি বৈশিষ্ট্য অনুরোধ লিখেছি: trac.ffmpeg.org/ticket/5170
六四

0

দ্রুততম উপায়টি হ'ল নিম্নলিখিত সারিগুলির সাহায্যে ডিরেক্টরিতে একটি BAT-ফাইল তৈরি করা:

@ECHO OFF

for %%f in (*.mp4) do (

echo “fullname: %%f”

del temp.mkv

mkvmerge --default-duration 0:18fps --fix-bitstream-timing-information 0 %%f -o temp.mkv

del %%f

ffmpeg -i temp.mkv -c:v copy %%f

del temp.mkv

)

আপনার একই ডিরেক্টরিতে এমকেভ্রিম এবং ffmpeg থাকা দরকার। এটি মানের কোনও ক্ষতি ছাড়াই সেকেন্ডে প্রতি এমপি 4-ফাইল পরিবর্তন করে।

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