FFMPEG / libx264: কিভাবে একটি ভেরিয়েবল ফ্রেম রেট সর্বাধিক সহ নির্দিষ্ট করা যায়?


16

FFMPEG / libx264 (-r / -framerate) এ একটি নির্দিষ্ট ফ্রেম রেট সরবরাহ করার পরিবর্তে, আমি একটি ম্যাক্সিমামাম মান সহ একটি পরিবর্তনশীল ফ্রেম রেট নির্দিষ্ট করতে চাই এবং libx264 কে ফ্রেম রেটটি উপযুক্ত হিসাবে দেখাতে দেয়। বর্ধিত স্থির ফ্রেমের মতো ( যখন আমার উত্সের ভিডিওগুলিতে প্রচুর পরিমাণে ঘটে ) এর মতো কিছু থাকে তখন এখানে অতিরিক্ত সংকোচনের ধারণাটি পাওয়া যায় ।

আমি বুঝতে পেরেছি যে একটি ভবিষ্যদ্বাণীমূলক বা দ্বিদ্বায়ী MPEG ফ্রেমটি খুব ভালভাবে সংকোচিত হবে, তবে এটিও সম্ভব যে উত্সের ফ্রেম রেটটি আমি ট্রান্সকোড করার উদ্দেশ্যে যা চেয়েছি তার চেয়ে কম (সম্ভবত একটি বড় স্ট্রিমের ফলে!)।


1
কোথায় (বা কীভাবে) আপনি x264 কে নিজে ভিএফআর ব্যবহার করতে বলছেন?
স্ল্যাক করুন

এটাই আমার প্রশ্ন।
মার্ক জেরোলিমাটোস

2
আপনার প্রশ্নটি ছিল সর্বাধিকের সাথে কীভাবে ভিএফআর নির্দিষ্ট করা যায় । আমি x264 ব্যবহার করে মোটেও ভিএফআর এনকোডিং নির্দিষ্ট করার কোনও উপায় সম্পর্কে অবগত নই। (আমিও ffmpeg সম্পর্কে এই সময়ে কথা বলছি না, কারণ এটি আপনার উৎস এবং x264 মধ্যে আরেকটি স্তর আছে।)
slhck

@ মারকগেরোলিমাটস আপনি কি উত্তর খুঁজে পেয়েছেন ?!
ডাঃ জ্যাকি

না আমি কখনও করিনি।
মার্ক জেরোলিমাটোস

উত্তর:


19

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

তার উত্তরটি বিজোড়ভাবে নামকরণ করা -vsyncবিকল্প। আপনি এটিকে কয়েকটি ভিন্ন বিকল্পে সেট করতে পারেন তবে আপনি যা চান তা হ'ল '2' বা vfr। ম্যান পৃষ্ঠা থেকে:

-vsync প্যারামিটার
ভিডিও সিঙ্ক পদ্ধতি। সামঞ্জস্যতার কারণে পুরানো মান সংখ্যা হিসাবে নির্দিষ্ট করা যেতে পারে। নতুন যুক্ত হওয়া মানগুলি সর্বদা স্ট্রিং হিসাবে নির্দিষ্ট করতে হবে।

  • 0, পাসথ্রু

    • প্রতিটি ফ্রেম তার টাইমস্ট্যাম্পের সাথে ডেমাক্সার থেকে ম্যাক্সারে যায়।
  • 1, সিএফআর

    • অনুরোধকৃত ধ্রুবক ফ্রেম হারটি হুবহু অর্জনের জন্য ফ্রেমগুলি সদৃশ হবে এবং ফেলে দেওয়া হবে।
  • 2, ভিএফআর

    • ফ্রেমগুলি তাদের টাইমস্ট্যাম্পের সাথে পেরিয়ে যায় বা ফেলে দেওয়া হয় যাতে 2 ফ্রেমগুলিকে একই টাইমস্ট্যাম্পটি না ঘটে।
  • ঝরা

    • পাসস্ট্র্রু হিসাবে তবে সমস্ত টাইমস্ট্যাম্প ধ্বংস করে, ম্যাক্সার ফ্রেম-রেটের ভিত্তিতে তাজা টাইমস্ট্যাম্প তৈরি করে।
  • -1, অটো

    • ম্যাক্সার সক্ষমতার উপর নির্ভর করে 1 এবং 2 এর মধ্যে চয়ন করে। এটি ডিফল্ট পদ্ধতি।

নোট করুন যে টাইমস্ট্যাম্পগুলি আরও পরে ম্যাক্সার দ্বারা সংশোধন করা যেতে পারে। উদাহরণস্বরূপ, ক্ষেত্রে যে ক্ষেত্রে format_negative_ts ফর্ম্যাট বিকল্প সক্ষম করা আছে।

-ম্যাপের সাহায্যে আপনি টাইমস্ট্যাম্পগুলি কোন স্ট্রিম থেকে নেওয়া উচিত তা নির্বাচন করতে পারেন। আপনি কোনও ভিডিও বা অডিও অপরিবর্তিত রেখে বাকী স্ট্রিম (গুলি) অপরিবর্তিতের সাথে সিঙ্ক করতে পারেন।

যাইহোক, আমার 'সাব-প্রশ্ন' উত্তর দেওয়ার জন্য একটি মন্তব্য পোস্ট করার মতো যথেষ্ট খ্যাতি আমার নেই, যা সবার মনে হচ্ছে। তবে আমার কয়েকটি ধারণা ছিল যা সম্পর্কে আমি খুব সতর্কতার সাথে খুব আশাবাদী নই ... তবে প্রথম যেটি চেষ্টা করেছিলাম তা আসলে কাজ করেছিল । So.

অবশ্যই আপনাকে -vsync 2বিকল্পটির সাথে বিকল্পটি একত্রিত করতে হবে -r $maxfps, অবশ্যই আপনি যেখানে $maxfpsসর্বাধিক ফ্রেমরেট চান তা প্রতিস্থাপন করুন ! এবং এটি কাজ করে! এটি কোনও উত্স ফাইল থেকে ফ্রেমের সদৃশ হয় না, তবে এটি এমন ফ্রেমগুলি ফেলে দেবে যা ফাইলটিকে সর্বোচ্চ ফ্রেমরেটের উপর দিয়ে যায়!

ডিফল্টরূপে এটি মনে হয় যে এটি -r $maxfpsকেবলমাত্র একটি ধ্রুবক ফ্রেমরেট অর্জনের জন্য ফ্রেমগুলিকে ডুপ্লিকেট / ড্রপ করার -vsync 2কারণ করে এবং নিজেই এটি পিটিএস মানগুলিকে প্রভাবিত না করে সরাসরি ফ্রেমগুলিকে টানতে বাধ্য করে।

আমি এটি সম্পর্কে আশাবাদী ছিলাম না কারণ আমি ইতিমধ্যে জানতাম যে -r $maxfpsএটি একটি ধ্রুবক ফ্রেমরেটে রাখে। আমি সত্যই কোনও ত্রুটি বা এটির জন্য যা আগে বা শেষ বা যা-কিছু এসেছিল কেবল তার আনুগত্যের প্রত্যাশা করেছি। আমি যা চেয়েছিলাম ঠিক তা এটি আমাকে এফএফএমপিইগ বিকাশকারীদের সাথে যথেষ্ট সন্তুষ্ট করে তোলে।

আমি আশা করি এটি আপনাকে বা অন্য কাউকে পরে সহায়তা করে যদি আপনার আর জানার দরকার না হয়।


3
-copytsপাশাপাশি সহায়ক হতে পারে
রজারডপ্যাক

1

আমি একটি ম্যাক্সিমামাম মান সহ একটি ভেরিয়েবল ফ্রেম রেট নির্দিষ্ট করতে চাই এবং libx264 কে ফ্রেম রেট ফিট করার সাথে সাথে এটি নীচে নামিয়ে দেওয়ার অনুমতি দেব। বর্ধিত স্থির ফ্রেমের মতো কিছু থাকলে এখানে অতিরিক্ত সংকোচনের ধারণাটি পাওয়া যায়

আমার বোঝার মধ্যে এটি সম্ভবত তুলনামূলক আনাড়ি হতে পারে তবে কিছু জটিল এবং প্রতিরোধমূলক কারণে এটি অনাকাঙ্ক্ষিত

যদিও কোনও x264 স্ট্রিমের ফ্রেমরেট (গুলি) রয়েছে, ফ্রেম রেট কোডেকের চেয়ে একটি ধারক-স্তরের সমস্যা।

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

নিম্ন-ফ্রেমরেট ধারণাটি একটি যৌক্তিক, তবে বিভিন্ন কারণে কার্যকর হয় না। যদিও এক্স 264৪ কিছু দক্ষতার সাথে ভিএফআর-সচেতন, আমি মনে করি না এমন একটি বিশ্লেষণ ফাংশন রয়েছে যা ফাইলের আকার হ্রাস করার জন্য গতির ক্ষেত্রে ফ্রেমরেটে পরিবর্তিত হবে (একাধিক বিটরেট নিয়ন্ত্রণের ক্ষেত্রে অ্যানালগাস)।

উত্সটিও একটি সমস্যা: ভিএফআর উত্সগুলি ডিফল্টরূপে তাদের ফ্রেমের পরিবর্তনশীলতা বজায় রাখে, তবে দৃশ্যত ভেরিয়েবল বিটরেটে একটি সিএফআর ফাইল এনকোড করা (কখনও কখনও ভাল, যখন টেলিকিনের প্রয়োজন হয় তখন) একই সিএফআর তৈরি করবে simply

এর অর্থ আপনাকে সম্ভবত হাতে হাতে বিটরেট লিখতে হবে (অর্থাত্ ফাইলের মধ্যে ধীরে ধীরে ধীরে ধীরে দৃশ্যের টাইমস্ট্যাম্পগুলি) লিখতে হবে, বা অ্যাভিসেন্টের জন্য ফ্রেম ডেসিমেশন অ্যালগোরিথের মতো অবলম্বন করতে হবে । যদি আপনার ভিডিওতে খুব কম গতি থাকে তবে কিছু ফ্রেম (এমনকি অর্ধেক?) ফেলে দেওয়া হবে। সমস্যাটি হ'ল এই অ্যালগরিদমগুলি উন্নত নয় এবং সর্বোত্তম এনকোডে কী কী অবদান রাখবে সে সম্পর্কে "রিয়েল লাইফ" ফুটেজ দিয়ে ভাল পছন্দ করবেন না।

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

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

এবং পরিশেষে, আপনি যা চান তা করার পক্ষে অনেকগুলি বিকল্প না থাকার কারণটি হল যে কেবলমাত্র টেম্পোরাল কম্প্রেশন (আংশিক ফ্রেমে রেকর্ডিং রেকর্ডিং) ব্যবহার করে বিটরেট পরিচালনা করতে x264 আসলেই ভাল। 1/2 ফ্রেমরেটে গেলে ফাইলের আকার অর্ধেক কেটে যাবে না; কম গতি বা অ্যানিমেশন থেকে আশা করা 10% সম্ভবত বাস্তবসম্মত লাভ gain

সুতরাং সংক্ষেপে, আপনার স্থির দৃশ্যের বিটরেট বাদ দেওয়া আপনার ফাইলের আকারের জন্য খুব সামান্য কাজ করবে, তবে ভিডিও এডিটিং সফ্টওয়্যারটির সাথে অসঙ্গতি উল্লেখ না করে একটি মানের এবং সিঙ্ক ইস্যু যুক্ত করবে।

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

গ্রহণযোগ্যতাটি হ'ল বহু বিটরেট সেটিংসের অনুকূলকরণে সময় ব্যয় করা ফাইল আকারের পরিচালনার ক্ষেত্রে আরও অনেক উপার্জন করবে এবং সামান্য লাভের জন্য জটিলতার পরিবর্তে আপনার ভিডিওর মান বাড়িয়ে তুলবে। আপনি ব্রডকাস্ট বা মিডিয়া স্ট্যান্ডার্ডের জন্য লক্ষ্য না রেখে আসল এফপিএস সংরক্ষণ করা সম্ভবত সেরা ধারণা। প্লেয়ারগুলি ভেরিয়েবল বিট্রেটস (সম্পাদকগণের বিপরীতে) বাজাতে সক্ষম, এবং ফ্রেমগুলির মধ্যে গতিতে ছোট পরিবর্তন হওয়ার কারণে আপনার ভিডিওতে আরও ফ্রেম, প্লেব্যাকটি সহজ এবং সম্ভবত ফাইলের আকার ছোট smaller

মানক সম্পর্কিত তথ্য এবং ফোরাম আলোচনার লিঙ্কগুলির একটি সংগ্রহ এখানে এনকোডিংয়ের এই বিভ্রান্তিকর দিকটি সহায়তা করা উচিত:

- avisynth ডেসিমেশন সরঞ্জাম

- fps এবং -r সুইচ
- x264 জেনারেল (tcfile, fps)
- টাইমকোড ফাইলের মান
- স্তর এবং প্রোফাইল
- সংক্ষিপ্ত, স্পষ্ট সিএফআর / ভিএফআর সেটিং সারাংশ ("ফ্রেমরেট" বিভাগ)

ডুম 9, ভিডিওহেল্প এবং সি তাত্ত্বিক আলোচনা
1 2 3 4 5 6 7

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