আমি কীভাবে ffmpeg এর সাথে h.264 প্রোফাইল স্তর নির্ধারণ করতে পারি?


16

আমার একটি মুভি আছে (এম 4 ভি / এইচ .264 / এএসি) যা আমার ম্যাকটিতে দুর্দান্ত অভিনয় করে তবে আমি সম্প্রতি আবিষ্কার করেছি যে এটি আমার অ্যাপল টিভি 3 তে প্লে করবে না। এই মুভি ফাইলটির বৈশিষ্ট্যগুলি দেখার পরে আমি দেখতে পাচ্ছি যে এটির একটি প্রোফাইল হাই@4.1 আছে তবে অ্যাপল টিভি 3 এর একমাত্র হাইপোর্ট @ 4.0 অবধি রয়েছে। আমি মনে করি যে এই ভিডিওটি অসম্পূর্ণ করে তুলছে এমন একমাত্র সম্পত্তি হ'ল সর্বাধিক ভিডিও বিট রেট, অন্যান্য সমস্ত বৈশিষ্ট্য দেখে মনে হচ্ছে যে তারা হাই@4.0 এ সমর্থিত।

এই ভিডিওটি হাই -৪.৪.০ এ ডাউনগ্রেড করতে আমি কীভাবে ffmpeg ব্যবহার করতে পারি?

বা আমাকে কী প্রকৃত সম্পত্তি (সর্বোচ্চ বিট রেট) পরিবর্তিত করতে হবে যা এই ভিডিওটিকে 4.0 এর পরিবর্তে 4.1 করে? আমি উদ্বিগ্ন যে আমি যদি কেবলমাত্র বিট রেটটি পরিবর্তন করি তবে ফাইলটি হাই@4.0 এর সাথে সামঞ্জস্যপূর্ণ তবে এটি এখনও হাই @@4.1 হিসাবে 'ট্যাগ' হবে এবং তাই এখনও আমার অ্যাপল টিভি 3 এ খেলবে না।

উত্তর:


22

এর সাথে এনকোড করার সময় libx264আপনি H.264 প্রোফাইল এবং স্তরটি সেট করতে পারেন:

  • -profile:v- এক high, mainঅথবা baseline(এবং অন্যদের, কিন্তু এই অপ্রাসঙ্গিক এখানে)
  • -level:v- এইচ .264 স্ট্যান্ডার্ডের অ্যাঙ্কেক্স এ সংজ্ঞায়িত করা, যেমন 4.0,।

উদাহরণ স্বরূপ:

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4

এখানে আমরা অডিও স্ট্রিমটি অনুলিপি করেছি কারণ এটি প্রভাবিত হবে না।

আউটপুটটির মেটাডেটাতে সঠিক প্রোফাইল এবং স্তর সেট থাকবে। এনকোডিংয়ের সময় আপনি এটি পরীক্ষা করতে পারেন, যেখানে এখানে x264কিছু বলা হয়েছে:

[libx264 @ 0x7fb26103a000] profile High, level 4.0

মিডিয়াআইএনফো আপনার ধারক এবং কোডেক বিশদ বিশ্লেষণে সহায়তা করতে পারে।

অবশ্যই, ভিডিওটিকে পুনরায় কোডিং করা কিছুটা হলেও এর গুণমানকে হ্রাস করবে, আপনি আবার কোনও ক্ষতিকারক রূপান্তর প্রয়োগ করছেন। -crfধ্রুব মানের মানের প্যারামিটারকে প্রভাবিত করার জন্য বিকল্পটি সেট করার চেষ্টা করুন । এখানে ডিফল্ট মান 23, এবং 18 এবং 28 এর মধ্যে মানগুলি বুদ্ধিমান হিসাবে বিবেচনা করা হয়। নিম্ন মানে আরও ভাল মানের। আপনার ইনপুটটির বিট রেট যদি 65,000 কেবিট / সেকেন্ড হয় তবে সম্ভবত রূপান্তর হওয়ার পরেও এটি বেশ সুন্দর দেখাবে।


1
এটা ভাল কাজ করেছে। দুর্ভাগ্যক্রমে এটি কিছু মেটাডেটা হারিয়েছে তবে আসল ভিডিওর গুণমানে কোনও পরিবর্তনযোগ্য পরিবর্তন হয়নি। আগ্রহের বাইরে, নিম্নলিখিত আদেশটি কি একই জিনিস অর্জন করতে পারে? ffmpeg -i input.mp4 -vcodec x264 -vprofile high -vlevel 4.0 -acodec copy output.mp4
স্যাম

হ্যাঁ, -vঅপশনগুলি হ'ল তার উপস্বত্ব :v। আপনি কোন মেটাডাটা হারাবেন?
13:47

আমি মনে করি এটি কেবল হারিয়ে যাওয়া শিল্পকর্মটিই হতে পারে। আমি জানি না যে এটি প্রযুক্তিগতভাবে মেটাডেটা হিসাবে বিবেচনা করা হয় ... আর্টওয়ার্কটি কি আসলে ফাইলটির মধ্যে রয়েছে? আমি এটিতে আবার যুক্ত করার আগে আমি অন্য সব কিছু যাচাই করে নি।
স্যাম

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

2
আমি এটি অর্জনের জন্য কেবল হোঁচট খেয়েছি। সাবলারের আসলে একটি বিকল্প থাকে আপনি যখন ভিডিও স্ট্রিমটি নির্বাচন করেন তখন নির্দিষ্ট ডিভাইসের সাথে এটি সামঞ্জস্যপূর্ণ করার জন্য প্রোফাইল এবং স্তর পরিবর্তন করে। এটি আপনাকে নির্ধারণ করছে যে আপনি যে প্রোফাইলটি সেট করছেন সেটি ভিডিওটি উপযুক্ত so
স্যাম

1

আপনার মন্তব্যের প্রসঙ্গে , এই আদেশটি চেষ্টা করুন:

ffmpeg -i input.mp4 -map 1 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy \
# copies all global metadata from input.mp4 to output.mp4
-map_metadata 0 \
# copies video stream metadata from input.mp4 to output.mp4
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from input.mp4 to output.mp4
-map_metadata:s:a 0:s:a \
output.mp4

চিয়ার্স

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