ক্ষতিহীন সর্বজনীন ভিডিও ফর্ম্যাট


14

আমি 1280x720 25fps ভিডিওর জন্য সবচেয়ে উপযুক্ত ক্ষতিবিহীন ভিডিও ফর্ম্যাটটি সন্ধান করার চেষ্টা করছি । ভিডিওটিতে 4 মিনিট রয়েছে। শব্দটি 320 কেবিপিএস এমপি 3 হবে, এটি কোনও বড় কথা নয়। আদর্শ শর্তসমূহ:

  • ক্ষতিহীন (উপলব্ধিহীন ক্ষতি হতে পারে)
  • কনটেইনার + কোডেক বেশিরভাগ প্ল্যাটফর্মে প্লে করা যায়
  • কনটেইনার + কোডেক আধুনিক ডিভিডি প্লেয়ারগুলিতে প্লে করা যায় (ডিভিডি ব্যতীত অন্য ফর্ম্যাটগুলিকে সমর্থন করে)
  • আকার 700 এমবি এর চেয়ে কম

এটা কি সম্ভব? ইতিমধ্যে তিন দিন লড়াই করা হয়েছে, কোনও সন্তোষজনক ফলাফল ছাড়াই, এমনকি 12 জিবি ফাইল পাওয়াও (অনেকটা মনে হয় - 3 জিবি / মিনিট)।


1
একটি তুলনা জন্য, দেখুন en.wikipedia.org/wiki/List_of_codecs#Lossless_compression
artistoex

4
আমি দুঃখিত তবে আপনি ব্যবহারিকভাবে 700 মিনিটের কম সংকুচিত 4 মিনিটের একটি (দৃষ্টিভিত্তিক) ক্ষতিহীন 720p ভিডিও পেতে পারবেন না (আমি এখানে মেগাবাইট ধরেছি, "এমবি" নয় যার অর্থ "বিট" হবে)। এতো বাধা কেন? ভিডিওটি কি h.264-এনকোড করা যাবে না?
slhck

হ্যাঁ, এমবি, বিভ্রান্তির জন্য দুঃখিত। আমার সিসিএ 5 টি ভিডিও x 4 মিনিটে 4 গিগাবাইটের (মাঝারি সীমাবদ্ধতা) ফিট করতে হবে।
mrkva

2
যেহেতু আপনি 12 জিআইবি ফাইল পাচ্ছেন আমি ধরে নিয়েছি যে আপনি 24 বিট রঙের গভীরতা ব্যবহার করছেন। সঙ্কুচিত ভিডিও ডেটা স্ট্রিমটি প্রতি মিনিটে প্রায় 4GiB। এটি একটি বিশাল পরিমাণের ডেটা। আপনি যা চান তা প্রতি মিনিটে প্রায় 170MiB। আপনি যে কোডেককে বেছে নিন তা নির্বিশেষে আপনি কেবল কোনও স্থির দৃশ্যে খুব বেশি গতিবিধি ছাড়াই এটি অর্জন করতে পারবেন। আমি আশঙ্কা করি আপনাকে ক্ষতিগ্রস্থ হতে কন্ট্রিন্ট শিথিল করতে হবে, ফ্রেমের হার কমিয়ে আনতে হবে বা বড় আকারের ফাইল সহ্য করতে হবে।
মার্কো

আপনি কি পরিষ্কার করতে পারেন, "কনটেইনার + কোডেক আধুনিক ডিভিডি প্লেয়ারগুলিতে প্লে করা যায় (ডিভিডি বাদে অন্য ফর্ম্যাটগুলিকে সমর্থন করে)"?
লগন

উত্তর:


24

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

ffmpeg -i input -c:v huffyuv -c:a libmp3lame -b:a 320k output.avi

এক্স 264৪, ওপেন-সোর্স h.264 এনকোডারটি লসলেস মোডে রয়েছে। এটি এমপি 4 ধারকের ভিতরে যেতে পারে এবং গত কয়েক বছরে তৈরি বেশিরভাগ হার্ডওয়্যারের সাথে সামঞ্জস্য হওয়া উচিত। প্রথম কমান্ডটি দ্রুত এনকোডের গতি দেবে, তবে বড় ফাইল; দ্বিতীয় কমান্ডটি অনেক বেশি সময় নিবে, তবে ফাইলটি দ্রুত এনকোড হওয়াটির প্রায় অর্ধেক আকারের হওয়া উচিত (এটি এখনও বেশ বড় হবে):

ffmpeg -i input -c:v libx264 -crf 0 -preset ultrafast -c:a libmp3lame -b:a 320k output.mp4

ffmpeg -i input -c:v libx264 -crf 0 -preset veryslow -c:a libmp3lame -b:a 320k output.mp4

যদি এটি আপনাকে একটি ছোট পরিমাণের ফাইল না দেয় তবে 18 এর একটি ক্রাফকে সাধারণত 'দৃষ্টিশক্তিহীন' হিসাবে বিবেচনা করা হয়:

ffmpeg -i input -c:v libx264 -crf 18 -preset veryfast -c:a libmp3lame -b:a 320k output.mp4

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

X264 এনকোডিংয়ের আরও গভীরতর গাইডের জন্য এখানে দেখুন ।


2
veryfastক্ষতিকারক x264 এর জন্য ভাল ডিফল্ট হিসাবে প্রস্তাব করবেন না । mediumএকটি ভাল মাঝারি স্থল, তবে আমি সাধারণত যে veryslowকোনও কিছুর চূড়ান্ত এনকোডের জন্য ব্যবহার করি। এছাড়াও huffyuvখুব দ্রুত নয়, আমি এটি সামঞ্জস্যতা ছাড়া অন্য কোনও কিছুর জন্য সুপারিশ করব না।
পিটার কর্ডেস

ffmpeg এর সাথে আরও কয়েকটি লসলেস কোডেক রয়েছে যা চেষ্টা করার মতো হতে পারে [এফএফভি 1 মনেও আসে] পাশাপাশি। জি এল!
রজারডপ্যাক

আপনি 0 এর একটি সিআরএফ ব্যবহার করেন এমনকি যদি এটি সত্যিকারের ক্ষতিহীন না হয় তবে libx264 দুটি রঙের চ্যানেলকে (YUV UV তে) উভয় দিকের অর্ধেক করে ডাউনসাম্পল করে না। এছাড়াও, রাউন্ডিং ত্রুটিগুলির সাথে, ডেটা x264 সংক্ষেপণের রাউন্ডের পরে বিট-বিট-বিট ইনডেন্টিকাল হওয়ার গ্যারান্টিযুক্ত নয়।
আদিশাক

1
Ffmpeg 3.4.1 নিয়ে আমার পরীক্ষায়, libx264 yuv444 পিক্সেল ফর্ম্যাট ব্যবহার করেছে, যেখানে "444" এর অর্থ "U, V অংশটি নিচে নমুনা দেবেন না"। এবং, ওপি স্পষ্টভাবে গোলাকার ত্রুটিগুলিতে কিছু মনে করে না: "উপলব্ধি ক্ষতিকারক হতে পারে"। সুতরাং, অ্যাডিসাক, আপনার উদ্বেগগুলি যুক্তিসঙ্গত, তবে এই উত্তরটির জন্য প্রযোজ্য নয়।
জিম DeLaHunt

YUV মোডে ffmpeg এবং libx264 ইনপুট উপর ভিত্তি করে একটি YUV পিক্সেল ফর্ম্যাট আলোচনা করবে। সুতরাং যদি ইনপুটটি YUV 4: 2: 0 হয় তবে আউটপুট পিক্সেল ফর্ম্যাটটিও তাই। যদি ইনপুটটি YUV 4: 4: 4 বা আরজিবি হয়, তবে আউটপুটটি YUV 4: 4: 4 হয়।
জ্ঞান

2

আজকাল আমি ওয়েবম পছন্দ করি :

ffmpeg -i input.avi -c:v libvpx-vp9 -lossless 1 output.webm

মাল্টি-কোর প্রসেসরের সাহায্যে দ্রুত রূপান্তর করতে, আমি পড়েছি যে আপনি সত্যিকারের কোরগুলির চেয়ে কম থ্রেড ব্যবহার করার পরামর্শ দিচ্ছেন। সুতরাং, একটি 8 কোর দিয়ে আপনি 7 টি থ্রেড নির্দিষ্ট করতে পারেন:

ffmpeg -i input.avi -c:v libvpx-vp9 -threads 7 -lossless 1 output.webm

1
থ্রেড গণনাটি ব্যবহারের জন্য নির্ধারণ করতে আমি পরিবেশের পরিবর্তনশীল% NUMBER_OF_PROCESSORS% ব্যবহার করতে চাই। যদি এটির গণনা 1 বা 2 হয় তবে আমি সমস্ত প্রসেসর ব্যবহার করেছি। যদি গণনা 3 বা 4 হয় তবে আমি একটি প্রসেসর ছাড়া সমস্ত ব্যবহার করি। এবং যদি গণনাটি বেশি হয় তবে আমি থ্রেড কাউন্টের জন্য দুটি প্রসেসর ব্যতীত অন্য সমস্ত ব্যবহার করি।
আদিসাক

1
ডস এক্সপ্রেশন হিসাবে, এটি দেখতে এরকম দেখাচ্ছে: যদি "% ADJUSTED_CPUCOUNT%" EQU "" (যদি% NUMBER_OF_PROCESSORS% EQU 1 থাকে (ADJUSTED_CPUCOUNT = 1 সেট করেন) অন্য% যদি% NUMBER_OF_PROCESSORS% EQU 2 হয় (ADJUSTED_CPUCOUNT = 2 সেট করুন)% যদি% NUMBER_OF_PROCESSORS% EQU 3 (ADJUSTED_CPUCOUNT = 2 সেট করুন) অন্যথায় যদি% NUMBER_OF_PROCESSORS% EQU 4 (সেট করুন ADJUSTED_CPUCOUNT = 3) অন্য (সেট / এ ADJUSTED_CPUCOUNT =% NUMBER_OF_PROCESSORS% -2))
অ্যাডিসাক

1
superuser.com/questions/155305/… বলেছেন যে ffmpeg ইতিমধ্যে সর্বোত্তম সংখ্যক থ্রেড বেছে নিয়েছে
বোরিস

ওয়েবমের চেয়ে ভাল পছন্দ (এই দিনগুলি) সম্ভবত av1 ফর্ম্যাট।
লনিবেস্ট

-1
# কন্টেইনার

ডিভিডি-প্লেয়ারগুলির সাথে সম্পূর্ণ সামঞ্জস্য রাখতে আপনার এমপিইজি -২ ফর্ম্যাট, ধারক, সীমাবদ্ধতা, কোডেক ব্যবহার করতে হবে। আমার অনুমান, "আধুনিক খেলোয়াড়" এর অর্থ "এমপি 4" সামঞ্জস্যতা, যা মূলত এবং বেশিরভাগই এমপি 4-ফাইল প্লেয়ার - এইচ .264, এমপিইজি -4, অ্যাভিসি => লিবক্স 264
আরও পড়ুন: https://de.wikedia.org/wiki /H.264

# ভিডিও

কটাক্ষপাত আছে https://trac.ffmpeg.org/wiki/Encode/H.264 , বিশেষ করে অংশ যেখানে এটি "প্রোফাইল" এবং "স্তর" সম্পর্কে হয়, সামঞ্জস্যের জন্য
ব্যবহার -profile:v high -level 4.0এটা করতে হবে

# শ্রুতি

ক্ষতিগ্রস্ত কোডেকগুলির সাথে পুনরায় এনকোডিং অডিও-ট্র্যাকগুলি এড়িয়ে চলুন - যে কোনও এমপি 3 ফর্ম্যাট ক্ষয়ক্ষতিযুক্ত এমনকি 320 কেবিপিএস। পরিবর্তে
ব্যবহার -c:a copyকরুন।

এখনও পর্যন্ত, এটি আমার জন্য বেশ ভাল কাজ করেছে। কোনও সিঙ্ক সমস্যা নেই।
অডিও স্ট্রিমগুলি কীফ্রেমে আবদ্ধ নয়। সঠিক কাটা সম্ভব।
যদি আপনার অডিও-ট্র্যাকটি 44kHz নমুনা-হারে রেকর্ড করা থাকে তবে সর্বাধিক ব্যবহার করুন। 256 কেবিপিএস

কেবল আপনার ভিডিওর চূড়ান্ত এনকোডের জন্য ক্ষতিকারক কোডেকগুলি ব্যবহার করুন, যদি আপনাকে কিছু পূর্বশর্ত প্রয়োজন হয়।

আমি কয়েকটি অডিও-সিঙ্ক সমস্যা শুনেছি, তবে দেখে মনে হচ্ছে মূল সমস্যাটি ছিল, এটি সুরক্ষিত উপাদান (!)।

# শেষ অবধি

আমি এই জাতীয় কিছু পছন্দ করব:
ffmpeg -i input -c:v libx264 -crf 5 -preset faster -profile:v high -level 4.0 -c:a copy output.mp4


বিকল্প "-level 4.0" দরকার নেই। X264 এর স্তরটি রেজোলিউশন এবং এফপিএসের ভিত্তিতে নির্ধারিত হয়, তাই সাধারণত এটি নিজেই সেট করার কোনও মানে হয় না, এটি কোনও কিছুর উন্নতি করবে না। আমি যতদূর জানি ffmpeg স্বয়ংক্রিয়ভাবে সঠিক স্তর সেট করতে পারে, সুতরাং আপনার যদি এটিকে চাপ দেওয়ার খুব ভাল কারণ না থাকে এবং FPS এবং রেজোলিউশনের উপর ভিত্তি করে কীভাবে স্তর নির্বাচন করতে হয় তা পুরোপুরি বুঝতে না পারলে আপনার "লেভেল" বিকল্পটি ব্যবহার করা উচিত নয়। আপনি যদি সর্বোচ্চ সামঞ্জস্যতা সম্পর্কে চিন্তা করেন তবে "উচ্চ" পরিবর্তে "বেসলাইন" প্রোফাইলটি ব্যবহার করুন।
লিসানরো রায়ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.