পুনরায় কোডিং ছাড়াই ffmpeg এ ফ্রেমরেট পরিবর্তন করুন


14

আমার কাছে একটি এমকেভি (এইচ 264) ভিডিও রয়েছে যা 23.976 এফপিএস (24000/1001) তবে আমি পুনরায় কোডিং এবং মান না হারিয়ে 25fps এ রূপান্তর করতে চাই। আমি জানি যে এমকিওয়ার্ম এটি করতে পারে (বিকল্প --default- সময়কাল '0: 25fps' সহ) তবে আমি সম্ভব হলে এফএফএমপিগ থেকে সরাসরি এটি করতে চাই ডক্স অনুসারে এটি কাজ করা উচিত:

ffmpeg -i input.mkv -r 25 -vcodec copy output.mkv

তবে আমি যখন এটি সম্পাদন করি আমি কেবল একই ভিডিও fps পাই। Ffmpeg এ (যদি বিদ্যমান থাকে) সঠিক পদ্ধতিটি কী?


1
আমি বিশ্বাস করি যে এই মুহূর্তে এফএফম্পেগের মাধ্যমে সম্ভব নয়। -rস্ট্রিম অনুলিপিটির সাথে সামঞ্জস্যপূর্ণ নয় এবং ফ্রেমরেট পরিবর্তন করার জন্য কোনও বিটস্ট্রিম ফিল্টার নেই।
ইলি

1
খুব খারাপ. আমাকে প্রতিবার এমকিভর্ম ব্যবহার করতে হবে। ধন্যবাদ
phet89

1
নিয়মিত ffmpeg দিয়ে এটি করার একটি বিভক্ত উপায় এবং এফএফএমপিএগের একটি পুরানো মডেল সংস্করণ সহ এটি করার সরাসরি উপায় রয়েছে। আপনি যদি আগ্রহী হন তবে আমি উত্তর হিসাবে এটি লিখব।
জ্ঞান

1
হ্যাঁ ধন্যবাদ .. আমি অতিরিক্ত সরঞ্জাম ছাড়াই এটি করতে চাই (আমার ইতিমধ্যে ffmpeg প্রয়োজন)
phet89

1
@ মালব্য আপনি এই বিষয়ে কথা বলছেন ? আমি এটি সংযোগ করতে দ্বিধা বোধ করি, তবে এখন এটি পুরানো regular যদিও নিয়মিত এফএফপিপেগের সাথে এটি করার জন্য বিভ্রান্তিকর পদ্ধতিতে আগ্রহী।
এলি

উত্তর:


15

FFmpeg এর বর্তমান সংস্করণগুলি ব্যবহার করার পদ্ধতিটি এখানে। এটি কনক্যাট ডেমাক্সারের উপর নির্ভর করে প্রথম ফাইলটির পরে ইনপুটগুলির পিটিএস পুনরুদ্ধার না করে কেবল একটি স্থির অফসেট প্রয়োগ করে। ধরা যাক আপনার একটি টাইমস্কেল 15360(এফএফপিপিগ আউটপুটের সাধারণ) সহ 30 টি fps স্ট্রিম রয়েছে । তার মানে ফ্রেমের 0পিটিএস 0এবং ফ্রেমে 30পিটিএস রয়েছে 15360। এটি যদি আমরা 23040পিটিএস মানগুলিকে প্রভাবিত না করে টাইমস্কেলটি পরিবর্তন করতে পারি তবে এটি 45 এফপিএস স্ট্রিমে পরিণত হবে ।

মূলত, নীচের পদ্ধতিটি সেটাই করে।

। উত্স বৈশিষ্ট্য সনাক্ত করুন।

Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1171 kb/s,
       30 fps, 30 tbr, 15360 tbn (default)

আপনি উত্স বৈশিষ্ট্যগুলি বিশেষত দ্রষ্টব্য এবং নোট করতে চান tbn


2 এ । (Ptionচ্ছিক) গণনা আরও সহজ করার জন্য টাইমস্কেলটি কোনও সুবিধাজনক কিছুতে পরিবর্তন করুন।

ffmpeg -i in.mp4 -c copy -an -video_track_timescale 30 in-v30.mp4

এটি আমাদের পায়

Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1171 kb/s, \
       30 fps, 30 tbr, 30 tbn (default

আপনি যদি এই পদক্ষেপটি করেন তবে নতুন টাইমস্কেলটি সমান বা মূল ফ্রেমরেটের একক অবিচ্ছেদ্য একাধিক হওয়া উচিত।

2 বি । প্রয়োজনীয় টাইমস্কেল গণনা করুন, যাতে লক্ষ্য ফ্রেমরেটের জন্য x, xউত্সের ফ্রেম # এর পিটিএস-এর নতুনের সমান মান হওয়া উচিত tbn। যদি আপনি পদক্ষেপ 2a করেন তবে এটি খুব সহজ এবং এটি কেবল নতুন ফ্রেমরেট। সুতরাং, লক্ষ্য fps জন্য 45, নতুন tbnহওয়া উচিত 45


। ডামি ভিডিও তৈরি করুন।

ffmpeg -f lavfi -i color=s=1280x720:r=45:d=1 -profile:v main -video_track_timescale 45 0.mp4

সমস্ত বৈশিষ্ট্য রেজোলিউশন, এইচ .264 প্রোফাইল, পিক্সেল ফর্ম্যাট, রেফস কাউন্ট..একটি ভাল ফলাফলের জন্য হওয়া উচিত।


4 ভিডিও কনক্যাট।

প্রথমে একটি টেক্সট ফাইল তৈরি করুন

file '0.mp4'
file 'in-v30.mp4'

তারপরে, কনক্যাট

ffmpeg -f concat -i list.txt -c copy -video_track_timescale 45 45fps.mp4

আউটপুট ফাইলটিতে 45 ​​এফপিএসে দ্বিতীয় ভিডিও প্লে হবে।

। এখন, ডামি প্রেরোল বন্ধ করুন

ffmpeg -ss 1.1 -i 45fps.mp4 -c copy -avoid_negative_ts make_zero in45.mp4

এবং আপনি

Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1757 kb/s, \
       45 fps, 45 tbr, 11520 tbn (default)

আমি বললাম এই গুলিয়ে গেছে!


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