কিভাবে FFMPEG ব্যবহার করে 1000 এর PNG চিত্রগুলির একটি সিরিজ থেকে একটি অসম্পূর্ণ AVI তৈরি করবেন


30

কিভাবে আমি FFMPEG ব্যবহার করে 1000 এর PNG চিত্রগুলির একটি সিরিজ থেকে একটি অসমুক্ত AVI তৈরি করতে পারি?

আমি একটি রূপান্তর এই কমান্ড ব্যবহার input.avi PNG ফ্রেমের একটি সিরিজ ফাইল করুন:

ffmpeg -y -i input.avi  -an -vcodec png  -s 1024x768 pic%d.png`

এখন আমার সমস্ত PNG ফ্রেম থেকে একটি অসম্পূর্ণ AVI ভিডিও তৈরি করতে হবে তা জানতে হবে। আমি এটা চেষ্টা করেছি:

ffmpeg -i pic%d.png -y -f avi -b 1150 -s 1024x768 -r 29.97 -g 12 -qmin 3 -qmax 13 -ab 224 -ar 44100 -ac 2 test.avi

কিন্তু আসন্ন ভিডিও আসল AVI সম্পর্কিত অনেক গুণ হারিয়ে ফেলে।

উত্তর:


71

একটি "অসম্পূর্ণ" AVI খুঁজে পেতে বিভিন্ন উপায় আছে ffmpeg, কিন্তু আমি আসলে আপনি "ক্ষতিগ্রস্ত" মানে সন্দেহ। উভয় পদে আপনি দেখতে পাবেন, তাদের সংজ্ঞা মধ্যে wiggle রুম একটি ন্যায্য বিট আছে।

আমি 720p এইচডি সংস্করণের সাথে এই আলোচনার জন্য যাচ্ছি বিগ বক Bunny , যেহেতু এটি একটি অবাধে-উপলভ্য ভিডিও যা আমরা সব পরীক্ষা করতে পারি এবং ফলাফল তুলনা করতে পারি। 1280 × 720 পি ভিডিওর ২4 fps এ ২4 fps এর কাঁচা তথ্যটি আপনার বিবৃত 1024 × 768 এর তুলনায় প্রায় ২9.97 fps লক্ষ্যে সমান, তাই আমার ফলাফলগুলি আপনার ফুটেজে আপনার প্রত্যাশিত ডেটা রেটগুলির পক্ষে একটি দুর্দান্ত নির্দেশিকা হওয়া উচিত।

স্বয়ংক্রিয় বিকল্প উপলব্ধ তালিকা

নিম্নোক্ত POSIX কমান্ড আপনাকে একটি তালিকা দেয় যা বেশিরভাগ²ই আমরা যা আলোচনা করি তার সাথে মিলে যায়:

$ ffmpeg -codecs 2> /dev/null | grep '^..EV..S ' | grep -vE 'bitmap|image'

আপনার নিজের FFmpeg এর কী সমর্থন করবে তা দেখতে আপনার নিজের মেশিনে সেই কমান্ডটি চালাতে পারেন। FFmpeg কদাচিৎ প্রতি সম্ভাব্য এনকোডার সক্ষম সঙ্গে নির্মিত হয়।

এখন আসুন ঐ অপশন আলোচনা।

সম্পূর্ণরূপে অসম্পূর্ণ

ডিজিটাল ডিসপ্লে দ্বারা ফটোগুলিতে পরিণত হওয়ার আগেই "অসম্পূর্ণ" শব্দটির সংজ্ঞাটি ভিডিওটি ঠিক আছে তবে আমি এটিতে সবচেয়ে নিকটতম ffmpeg -codecs তালিকা হয় -c:v r210, r10k, v410, v308, ayuv এবং v408। এই সমস্ত উল্লেখযোগ্যভাবে একই জিনিস, শুধুমাত্র ভিন্ন রঙের ঘনত্ব , রঙ স্থান , এবং আলফা চ্যানেল সমর্থন।

  • R210 এবং R10K হয় 4: 4: 4 RGB 10 বিট প্রতি কম্পোনেন্ট (বিপিসি), তাই তারা উভয় সম্পর্কে প্রয়োজন 708 মেগাবিট / সে আমার পরীক্ষায় 720p জন্য। (যে প্রায় & frac13; ঘন্টা প্রতি টিবি, বন্ধু!)

    এই কোডেকগুলি কম্পিউটারের দ্বারা ম্যানিপুলেশন সহজতর করার জন্য 3-10 বিট রঙের উপাদানগুলিকে পিক্সেল প্রতি 32-বিট মানের মধ্যে প্যাক করে, যা পাওয়ার-অফ-2 মাপের মতো। এই কোডেকসের মধ্যে একমাত্র পার্থক্যটি হল 32-বিট শব্দটির শেষ দুটি অব্যবহৃত বিট। এই তুচ্ছ পার্থক্য সন্দেহজনক কারণ তারা প্রতিদ্বন্দ্বী সংস্থা থেকে আসে, ব্ল্যাকম্যাগিক ডিজাইন এবং AJA ভিডিও সিস্টেম যথাক্রমে।

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

  • V410 মূলত শুধু R210 / R10K এর YUV সংস্করণ; তাদের তথ্য হার অভিন্ন। এই কোডেক তবুও দ্রুত এনকোড করতে পারে, কারণ ffmpeg আপনার ইনপুট ফ্রেমগুলির রঙের স্থান এবং এই রঙের স্থানগুলির মধ্যে একটি ত্বরিত রঙ স্থান রূপান্তর পথ থাকতে পারে।

    আমি এই কোডেকটি সুপারিশ করতে পারছি না, তবে যেহেতু আমি চেষ্টা করেছি এমন কোনও সফ্টওয়্যারে ফাইলটি চালানোর জন্য আমি ফাইলটি পেতে পারিনি, এমনকি AJA এবং Blackmagic কোডেকগুলি ইনস্টল করেও।

  • V308 V410 এর 8 বিপিসি ভেরিয়েন্ট, তাই এটি আসে 518 মেগাবিট / সে আমার পরীক্ষায়। ভি 410 এর মতো, আমি এই ভিডিওগুলি স্বাভাবিক ভিডিও প্লেয়ার সফটওয়্যারে ফিরে আসার জন্য অক্ষম ছিলাম।

  • AYUV এবং V408 মূলত V308 হিসাবে একই জিনিস, ছাড়াও এটি একটি আলফা চ্যানেল অন্তর্ভুক্ত, তা প্রয়োজন বা না! যদি আপনার ভিডিও স্বচ্ছতা ব্যবহার করে না, তবে আপনি গভীর রঙের স্থানটি উপভোগ না করে উপরের 10 বিপিসি R210 / R10K কোডেকের আকারের পেনাল্টি পরিশোধ করেন।

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

    V408 একই ভাবে কুইকটাইমে নেটিভ বলে মনে করা হয়, তবে ভি 408 ফাইলটি আমার ম্যাকের কুইকটাইম 7 বা 10 তে প্লে হবে না।

সুতরাং, যদি আপনার PNGs নামকরণ করা হয়, এই সব একসঙ্গে নির্বাণ frame0001.png এবং তাই ঘোষণা:

$ ffmpeg -i frame%04d.png -c:v r10k output.mov
  ...or...                -c:v r210 output.mov
  ...or...                -c:v v410 output.mov
  ...or...                -c:v v408 output.mov
  ...or...                -c:v v308 output.mov
  ...or...                -c:v ayuv output.avi

লক্ষ্য করুন যে আমি AYUV ক্ষেত্রে AVI নির্দিষ্ট করেছি, কারণ এটি বেশিরভাগই উইন্ডোজ কেবল কোডেক। অন্যরা আপনার কম্পিউটারে কোন কোডেকগুলি নির্ভর করে তা কুইকটাইম বা AVI তে কাজ করতে পারে। যদি একটি ধারক বিন্যাস কাজ করে না, অন্য চেষ্টা করুন।

উপরের কমান্ডগুলি - এবং নীচেরগুলিও - আপনার ইনপুট ফ্রেমগুলি আপনার আউটপুট ভিডিওর জন্য ইতিমধ্যেই একই আকারের অনুমান করুন। যদি না, মত কিছু যোগ করুন -s 1280x720 কমান্ড, আউটপুট ফাইলের নাম আগে।

সংকুচিত RGB, কিন্তু লসলেস

যদি, আমি সন্দেহ করি, আপনি আসলে "অসম্পূর্ণ" এর পরিবর্তে "লসলেস" বলতে চান, উপরের যে কোনওটি থেকে অনেক বেশি পছন্দ অ্যাপল কুইকটাইম অ্যানিমেশন , মাধ্যমে -c:v qtrle

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

ffmpeg জিনিস হবে qtrle আপনার জন্য একটি AVI ধারক মধ্যে, কিন্তু ফলাফল খুব ব্যাপকভাবে সামঞ্জস্যপূর্ণ হতে পারে না। আমার পরীক্ষায়, কুইকটাইম প্লেয়ার এমন একটি ফাইল সম্পর্কে কিছুটা জড়িয়ে ধরবে, তবে এটি এটি খেলবে। অদ্ভুত, যদিও, ভিএলসি এটি খেলা হবে না, যদিও এটি অংশ ভিত্তিক হয় ffmpeg। আমি এই কোডেক জন্য QT পাত্রে লাঠি চাই।

কুইকটাইম অ্যানিমেশন কোডেক একটি তুচ্ছ ব্যবহার করে RLE প্রকল্প, তাই সহজ অ্যানিমেশনের জন্য, এটি নীচের Huffyuv সম্পর্কে পাশাপাশি করা উচিত। প্রতিটি ফ্রেমে আরো রং, এটি উপরের উপরে সম্পূর্ণরূপে অসম্পূর্ণ বিকল্পগুলির বিট হারে পৌঁছাবে। বিগ বক বনি সঙ্গে আমার পরীক্ষায়, আমি পেতে সক্ষম ছিল ffmpeg আমাকে একটি দিতে 165 মেগাবিট / সে আরজিবি ফাইল 4: 4: 4 মোড, মাধ্যমে -pix_fmt rgb24

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

দ্য ffmpeg কুইকটাইম অ্যানিমেশন বাস্তবায়ন সমর্থন করে -pix_fmt argb, যা আপনাকে 4: 4: 4: 4 RGB পায়, যার অর্থ এটি একটি আলফা চ্যানেল রয়েছে। একটি খুব রুক্ষ সাজানোর উপায়, এটি QuickTime সমতুল্য -c:v ayuv, উপরোল্লিখিত. ক্ষতির সংকোচন কারণ, যদিও, এটি শুধুমাত্র আসে 214 মেগাবিট / সে , কম & amp; frac13; গুণ বা বৈশিষ্ট্য শূন্য ক্ষতি সঙ্গে AYUV এর ডাটা হার।

সঙ্গে QuickTime অ্যানিমেশন রূপান্তর আছে কম প্রতি পিক্সেলের চেয়ে 24 বিট, কিন্তু তারা ক্রমবর্ধমান সরল অ্যানিমেশন শৈলীগুলির জন্য সর্বোত্তম ব্যবহার করা হয়। ffmpeg স্পিক দ্বারা সংজ্ঞায়িত অন্যান্য ফরম্যাটের শুধুমাত্র এক সমর্থিত বলে মনে হয়, -pix_fmt rgb555be, যার অর্থ 15 বিপিপি বিগ-এন্ডিয়ান আরজিবি। এটি কিছু ভিডিওর জন্য সহনীয়, এবং বেশিরভাগ স্ক্রিনকাস্ট ক্যাপচার এবং সহজ অ্যানিমেশনগুলির জন্য এটি ভাল। আপনি যদি রঙের স্থান ক্রমানুসারে গ্রহণ করতে পারেন, তবে আপনি এটি খুঁজে পেতে পারেন 122 মেগাবিট / সে তথ্য হার আপীল।

একসাথে এই সব নির্বাণ:

$ ffmpeg -i frame%04d.png -c:v qtrle -pix_fmt rgb24    output.mov
  ...or...                           -pix_fmt argb     output.mov
  ...or...                           -pix_fmt rgb555be output.mov

কার্যকরীভাবে ক্ষতিগ্রস্ত: YUV ট্রিক

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

ভিডিও স্টোরেজ এবং ডেলিভারি সিস্টেমগুলি প্রায়শই লুম্যান্স তথ্যের চেয়ে রঙের তথ্যের জন্য প্রতি পিক্সেলের কম বিট ব্যবহার করে। এই বলা হয় chroma subsampling । সবচেয়ে সাধারণ স্কিমগুলি 4: 2: 0 এবং 4: 2: 2।

4: 2: 0 ইউটিউব তথ্যটি কালো এবং সাদা (শুধুমাত্র কেবল) কমপ্রেসড ভিডিওর তুলনায় মাত্র 50% বেশি এবং ½ 4: 4: 4 আরজিবি বা YUV এর ডাটা রেট।

4: 2: 2 হল 4: 2: 0 এবং 4: 4: 4 এর মধ্যে অর্ধেক বিন্দু। এটি কেবলমাত্র Y- একমাত্র ভিডিওর ডেটা রেট এবং & amp; FRAC23; 4: 4: 4 এর তথ্য হার।

আপনি মাঝে মাঝে মাঝে মাঝে 4: 1: 1 দেখতে পাবেন ডিভি ক্যামেরা স্ট্যান্ডার্ড । 4: 1: 1 তে 4: 2: 0 হিসাবে একই অসমুক্ত ডাটা রেট রয়েছে, তবে রঙের তথ্যটি আলাদাভাবে সাজানো হয়।

এই সব পয়েন্টটি হল যে যদি আপনি 4: 2: 0 H.264 ফাইল দিয়ে শুরু করেন তবে এটি 4: 4: 4 এ পুনরায় এনকোডিং করুন। RGB আপনাকে 4: 2: 0 ক্ষতিগ্রস্তভাবে সংকুচিত YUV থেকে সম্পূর্ণরূপে কিছুই কিনে নেয় না। আপনি যদি আপনার ওয়ার্কফ্লোটি জানেন তবেও এটি সত্য তবে 4: 4: 4 আরজিবি, এটি একটি তুচ্ছ রূপান্তর; ভিডিও হার্ডওয়্যার এবং সফ্টওয়্যার নিয়মিত ফ্লাই এ যেমন রূপান্তর করবেন।

আপনি কেবলমাত্র 4: 4: 4 প্রয়োজন যখন আপনি পিক্সেল পিপিং করেন বা আপনি ভিডিওতে পিক্সেল স্তরের রঙ পরিবর্তন করছেন এবং আপনাকে সঠিক পিক্সেল মানগুলি সংরক্ষণ করতে হবে। চাক্ষুষ প্রভাব (ভিএফএক্স) কাজটি 4: 4: 4 পিক্সেল ফর্ম্যাটের সাথে কাজ করা সহজ, উদাহরণস্বরূপ, তাই উচ্চ-শেষ VFX ঘরগুলি প্রায়ই উচ্চতর ডেটার রেটগুলিকে সহ্য করতে ইচ্ছুক হয়।

কার্যকরীভাবে ক্ষতিগ্রস্ত: কোডেক পছন্দ

আপনি একবার রঙ decimation সঙ্গে YUV কোডেক আপ খুলতে, আপনার অপশন, এছাড়াও খোলা। ffmpeg প্রচুর আছে কার্যকরভাবে ক্ষতিগ্রস্ত কোডেক।

Huffyuv

সবচেয়ে ব্যাপকভাবে সামঞ্জস্যপূর্ণ বিকল্প Huffyuv । আপনি এই মাধ্যমে পেতে -c:v huffyuv

মূল উইন্ডোজ হাফিউভ কোডেক শুধুমাত্র দুটি পিক্সেল ফর্ম্যাট সমর্থন করে: RGB24 এবং YUV 4: 2: 2। (প্রকৃতপক্ষে, এটি YUV 4: 2: 2 এর দুটি স্বাদ সমর্থন করে, যা কেবল ডিস্কের বাইটের ক্রমের মধ্যেই পৃথক।)

FFmpeg Huffyuv কোডেকের পুরোনো সংস্করণগুলিতে RGB24 সমর্থন অন্তর্ভুক্ত করা হয়নি, তাই আপনি যদি এটি ব্যবহার করেন এবং FFmpeg আপনাকে বলে যে এটি ব্যবহার করতে যাচ্ছে yuv422p পিক্সেল বিন্যাস, আপনি আপগ্রেড করতে হবে।

FFmpeg এছাড়াও একটি Huffyuv বৈকল্পিক কোডেক নামক FFVHuff, যা YUV 4: 2: 0 সমর্থন করে। এই বৈকল্পিকটি উইন্ডোজ ডাইরেক্টশ হাফিউউভ কোডেকের সাথে সামঞ্জস্যপূর্ণ নয়, তবে এটি কোনও সফ্টওয়্যারের উপর ভিত্তি করে খুলতে হবে libavcodec, যেমন VLC হিসাবে।

  • RGB24 - আরজিবি 4: 4: 4 মূলত কুইকটাইম অ্যানিমেশনের RGB24 রঙের স্থান বিকল্প হিসাবে একই জিনিস। দুটি কোডেক একটি নির্দিষ্ট ফাইলের জন্য সংকোচনের মধ্যে কিছুটা আলাদা হবে, তবে সাধারণত এটি বন্ধ হয়ে যাবে।

    এটিও মূলত একই জিনিস যা YUV 4: 4: 4 মোডটি উপরের V308 বিকল্প দ্বারা ব্যবহৃত হয়। রঙের স্থান পার্থক্যটি কোনও বাস্তব পার্থক্য দেয় না, কারণ রঙের স্থান রূপান্তরটি রিয়েল টাইমে রূপান্তর করা সহজ।

    হাফিউভের লসলেস কম্প্রেশনয়ের কারণে, আমি কম্প্রেস করার জন্য একটি পরীক্ষামূলক ভিডিও পেতে সক্ষম হয়েছিলাম 251 মেগাবিট / সে RGB24 মোডে, আপনি V308 বা AYUV থেকে যা পাবেন তার সমান ভিজ্যুয়াল মানের সাথে। AVI একটি পরম হয় অবশ্যই আপনার জন্য, ইনস্টল করা Huffyuv কোডেক AYUV এর 3 × ডাটা হার খরচ করার চেয়ে সম্ভবত কম বেদনাদায়ক।

  • YUV 4: 2: 2 - এই মোডটি আরজিবি 24 এর তুলনায় ভিডিওর জন্য অনেক বেশি ব্যবহারিক, যা কেন সন্দেহজনক ffmpeg বিকাশকারী প্রথমে এটি বাস্তবায়ন করতে বেছে নেওয়া হয়েছে। আপনি তাত্ত্বিক & frac23 থেকে আশা চাই; উপরে আলোচনা হ্রাস, আমার পরীক্ষা ফাইল এনকোড করা 173 মেগাবিট / সে । এটি বেশ ঠিক আছে এবং FRAC23 ;, যদি আপনি এই দুটি পরীক্ষাগুলির মধ্যে অডিও ট্র্যাক অপরিবর্তিত ছিল তা বিবেচনায় রাখেন।

  • YUV 4: 2: 0 - এই বিকল্পটি 4: 2: 2 এর চেয়েও বেশি রঙের তথ্যকে স্থির করে, ডেটা হারে ড্রপ করে 133 মেগাবিট / সে আমার পরীক্ষায়।

একসাথে এই সব নির্বাণ:

$ ffmpeg -i frame%04d.png -c:v huffyuv -pix_fmt rgb24   output.avi
  ...or...                             -pix_fmt yuv422p output.avi
  ...or...                -c:v ffvhuff -pix_fmt yuv420p output.avi

যদিও ffvhuff codec ডিফল্ট 4: 2: 0 হিসাবে আমি এই লিখুন, এবং প্রকৃতপক্ষে কেবল আমি ব্যবহার করছি রিলিজ সংস্করণে যে পিক্সেল বিন্যাস সমর্থন করে, এই পরিবর্তন হয় , তাই আপনি এই ডিফল্ট পরিবর্তন ক্ষেত্রে পতাকা অন্তর্ভুক্ত করা উচিত।

ইউটিউব ভিডিও

Huffyuv এবং FFVHuff হিসাবে একই আত্মা একটি সাম্প্রতিক বিকল্প ইউটিউব ভিডিও । Huffyuv মত, আছে একটি উইন্ডোজ ভিডিও কোডেক যা কোনও উইন্ডোজ প্রোগ্রাম যা একটি মুভি চালাতে পারে, কোডেক ইনস্টল করে এই কোডেকটি ব্যবহার করে ভিডিও চালাতে পারে। Huffyuv এর থেকে ভিন্ন, এছাড়াও একটি ম্যাক ভিডিও কোডেক রয়েছে, তাই আপনি FFmpeg ভিত্তিক সফ্টওয়্যার সীমাবদ্ধ না হন বা libavcodec ম্যাক এ এই ফাইল পড়তে।

এই কোডেক হয় খুব রঙের স্পেসের ক্ষেত্রে নমনীয়, তাই আমি সাধারণ রঙের স্পেসগুলির কয়েকটি উদাহরণ দেব:

  • 4: 4: 4 আরজিবি মাধ্যমে -f avi -c:v utvideo -pix_fmt rgb24 দেয় 178 মেগাবিট / সেকেন্ড আউটপুট

  • 4: 4: 4 YUV মাধ্যমে -f avi -c:v utvideo -pix_fmt yuv444p দেয় 153 মেগাবিট / সেকেন্ড আউটপুট

  • 4: ২: ২ ইউ ইউ ভি মাধ্যমে -f avi -c:v utvideo -pix_fmt yuv422p দেয় 123 মেগাবিট / সেকেন্ড আউটপুট

  • 4: 2: 0 YUV মাধ্যমে -f avi -c:v utvideo -pix_fmt yuv420p দেয় 100 মেগাবিট / সেকেন্ড আউটপুট

আমি সন্দেহ করি 4: 4: 4 YUV 4: 4: 4 এর চেয়েও ভাল। এই দুইটি প্রযুক্তিগত দিক থেকে সমান হলেও সোর্স ভিডিওটি 4: 2: 0 ইউইউভি, তাই YUV ফর্ম্যাটে ডেটা সাজানোর জন্য ভাল ক্ষতিহীন সংকোচনের জন্য অনুমতি দেয় ফাইলটিতে একসাথে আংশিক-অপ্রয়োজনীয় U এবং V চ্যানেলগুলি গোষ্ঠীভুক্ত করে।

FFV1

এই স্থানটিতে আরেকটি আকর্ষণীয় বিকল্প FFmpeg এর নিজস্ব FFV1 কোডেক । এটি বেশিরভাগই প্লেব্যাক বা সম্পাদনা কোডেকের পরিবর্তে একটি সংরক্ষণাগার কোডেক হিসাবে ব্যবহৃত হয়, তবে যেহেতু অনেক সফ্টওয়্যার হয় তার উপর ভিত্তি করে libavcodec লাইব্রেরি FFmpeg underpinning বা লashed করা যেতে পারে libavcodec মত সরঞ্জাম মাধ্যমে ffdshow, যাইহোক এটা আপনার জন্য দরকারী হতে পারে।

গতানুগতিক, ffmpeg FFV1 এর মতো নমনীয় কোডেক ব্যবহার করার সময় আপনার ইনপুট ফাইলগুলির রঙের স্থান সংরক্ষণ করবে, যাতে আপনি যদি এটি 4: 2: 0 YUV ব্যবহার করে যা কোনও অফিসিয়াল বিগ বাক বনি এমপি 4 ফাইলগুলিকে ফিড করেন, তবে আপনি যদি না পান তবে দিতে একটি -pix_fmt পতাকা ffmpeg। এই একটি ফলাফল 63 মেগাবিট / সে আউটপুট ফাইল.

যদি আপনি FFV1 কে 4: 4: 4 YUV রঙের স্থান ব্যবহার করতে বাধ্য করেন -pix_fmt yuv444p, ফাইল আকার শুধুমাত্র যায় 86 মেগাবিট / সেকেন্ড , কিন্তু এই ক্ষেত্রে আমরা কিছুই কিনছি না কারণ আমরা 4: 2: 0 মূল থেকে এনকোডিং করছি। যাইহোক, যদি আপনি PNGs এর একটি সেটে ফিড করেন তবে আসল প্রশ্ন হিসাবে, আউটপুট ফাইলটি ব্যবহার করার সম্ভাবনা রয়েছে bgra অথবা bgr0 রঙ স্থান, যা শুধু পুনর্বিন্যাস হয় argb এবং rgb24 রঙ স্পেস উপরে আনা।

লসলেস এইচ ২64

আরেকটি আকর্ষণীয় বিকল্প লসলেস এইচ ২64 । এটি বেশ অনেক একটি x264 শুধুমাত্র এই লেখার মতো জিনিস, তবে এনকোডিং পার্শ্বে FFmpeg ব্যবহারকারীরা অন্যান্য সফটওয়্যার ব্যবহার করে যা সম্ভবত হতে পারে libx264 উপরে পাঠোদ্ধারতা পাশাপাশি, যেমন VLC।

এই ধরনের ফাইল পেতে সবচেয়ে সহজ উপায় হল:

$ ffmpeg -i frame%04d.png -c:v libx264 -qp 0 -f mp4 output.mp4

দ্য -qp 0 পতাকাটি কী: উচ্চতর মান ক্ষতিকারক সংকোচন দেয়। (আপনি দিতে পারেন -crf 0 একই প্রভাব পেতে।)

যেমন FFV1 সঙ্গে, ffmpeg ইনপুট রঙের স্থান প্রদত্ত সেরা আউটপুট রঙের স্থান অনুমান করার চেষ্টা করবে, তাই উপরের ফলাফলের তুলনায়, আমি বিভিন্ন রঙের স্পেসগুলির সাথে বিগ বক বনি সোর্স ফাইলে একাধিক এনকোড পাস চালালাম:

  • yuv444p : এই কি ffmpeg আপনি যখন এটি একটি RGB PNG প্রবাহটি পছন্দ করেন, তখন এটি মূল প্রশ্ন হিসাবে এবং ফলাফলগুলির মধ্যে একটি 44 মেগাবিট / সেকেন্ড আমাদের পরীক্ষা ফাইল সঙ্গে ফাইল

  • yuv422p : এটি হাফিউভের জন্য ডিফল্ট রঙের স্থানটির মতো, কিন্তু আমরা একটি পেতে পারি 34 মেগাবিট / সেকেন্ড এই ক্ষেত্রে ফাইল, বেশিরভাগ সঞ্চয়!

  • yuv420p : বিগ বক বনি অফিসিয়াল এমপি 4 গুলির জন্য এটি ডিফল্ট, আমি পরীক্ষা করছি এবং এর ফলাফল 29 মেগাবিট / সেকেন্ড ফাইল।

সতর্ক থাকুন যে আপনি ছোট আকারের ফাইলগুলি পেতে অনেকটা সামঞ্জস্য রেখেছেন। এজন্যই আমি এভিআই বা এমওভি কন্টেইনারে এটি স্টাফ করার চেষ্টা করি না। এটি x264 এর সাথে খুব ঘনিষ্ঠভাবে সংযুক্ত রয়েছে যা আপনি তার মানক কন্টেইনার টাইপ (এমপি 4) এর পরিবর্তে ব্যবহার করতে পারেন। আপনি কিছু ভালো ব্যবহার করতে পারে মাট্রসকা এই জন্য।

আপনি যুক্ত করে একটি দ্রুত এনকোডিং সময় জন্য যে বিট রেট কিছু বন্ধ করতে পারেন -preset ultrafast। যে আমার পরীক্ষা ফাইল এর বিট হার বৃদ্ধি 44 মেগাবিট / সে YUV 4: 2: 2 মোড, কিন্তু প্রতিশ্রুত হিসাবে, অনেক দ্রুত এনকোড। ডক্স দাবি করেন যে -preset veryslow এছাড়াও উপযুক্ত, কিন্তু এটি একটি ফলাফল অনেক শুধুমাত্র স্থান ছোট ক্ষুদ্র সংরক্ষণ যখন সময় এনকোড; আমি এটা সুপারিশ করতে পারেন না।

অন্যরা

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

উপলব্ধিহীনভাবে ক্ষতিগ্রস্ত: অথবা, আপনি সম্ভবত কিছু ক্ষতির সাথে দূরে যেতে পারেন

তারপর কোডেক যে আছে perceptually অবচয়হীন। যতক্ষণ না আপনি পিক্সেল পিকিং করছেন, আপনি প্রায় নিশ্চিতভাবে বলতে পারেন না যে এটি পূর্ববর্তী দুটি গোষ্ঠীর চেয়ে ভিন্ন চাক্ষুষ ফলাফল দেয়। ভিডিও ক্যাপচার সেন্সর এবং ডিসপ্লে ডিভাইসের মধ্যে একেবারে শূন্য পরিবর্তনের ধারণাটি ছেড়ে দেওয়ার মাধ্যমে আপনি প্রচুর সঞ্চয় কিনুন:

  • অ্যাপল ProRes : -c:v prores অথবা -c:v prores_ks ProRes একটি প্রোফাইল-ভিত্তিক কোডেক, যার অর্থ রয়েছে বিভিন্ন রূপ, প্রতিটি একটি ভিন্ন মানের বনাম স্পেস ট্রেডফোনের সাথে:

    • প্রো 4444 শুধুমাত্র ব্যবহার করে আমাদের পরীক্ষা ভিডিও encodes 114 মেগাবিট / সে এখনো, হয় ভিএফএক্স মানের । বর্তমানে তিনটি ভিন্ন আছে prores* FFmpeg মধ্যে কোডেক, কিন্তু শুধুমাত্র prores_ks ProRes 4444 সমর্থন করে, আমি এটি লিখতে হিসাবে, মাধ্যমে -profile:v 4444 বিকল্প।

      আপনি যদি হতাশ হয়ে থাকেন কেন আপনি প্রোসেস 4444 এর সাথে লসলেস এইচ ২64 এ যেতে চান তবে এটি সামঞ্জস্য, ডিকোডিং গতি, পূর্বাভাস এবং আলফা চ্যানেলে আসে।

    • ProRes 422 শুধুমাত্র প্রয়োজন, এমনকি আরো স্থান সংরক্ষণ করে 84 মেগাবিট / সে একটি ফলাফল দিতে আপনি ProRes 4444 থেকে শুধুমাত্র পিক্সেল-পিপিং দ্বারা বলতে পারেন। ProRes 4444 দ্বারা প্রদত্ত আলফা চ্যানেলটির প্রয়োজন না থাকলে, প্রোরেস 4444 এ জোর দেওয়ার কোনও কারণ নেই।

      ProRes 422 একটি এলফা চ্যানেল সমর্থন করে না, উপরে Lossless H.264 বিকল্পের নিকটতম প্রতিদ্বন্দ্বী। যদি আপনি অ্যাপল প্রো ভিডিও অ্যাপ্লিকেশনের সাথে সামঞ্জস্যের প্রয়োজন হয়, এনকোডিং এবং ডিকোডিংয়ের জন্য কম সিপিপি ওভারহেড বা পূর্বাভাসযোগ্য বিট রেটগুলির সাথে আপনার প্রোটেসগুলির উচ্চতর বিট রেটটি সহ্য করতে চান। উদাহরণস্বরূপ, হার্ডওয়্যার এনকোডারগুলির সাথে পরবর্তীটি গুরুত্বপূর্ণ। অন্যদিকে, যদি আপনি লসলেস এইচ ২64 এর সামঞ্জস্য সমস্যাগুলির সাথে সামলাতে পারেন তবে আপনি 4: 2: 0 রঙের স্থান ব্যবহার করার বিকল্প পাবেন, যা কোনও প্রোর প্রোফাইলের বিকল্প নয়।

      FFmpeg এ ProRes এনকোডারগুলির তিনটি প্রোরস 422 প্রোফাইলে সমর্থন করে, তাই সর্বাধিক বিকল্পটি ব্যবহার করা হয় -c:v prores, বরং -c:v prores_ks -profile hq, অথবা স্ব-প্রোফাইল বৈশিষ্ট্য উপর নির্ভর করে prores_ks সঠিক জিনিস করতে।

    আরও বেশি প্ররোচিত ProRes প্রোফাইল আছে, কিন্তু তারা এসডি ভিডিও বা এর জন্যই বোঝানো হয়েছে প্রক্সি সম্পূর্ণ res ফাইল জন্য।

    ProRes এর সাথে প্রধান সমস্যা হল এটি এখনও অ্যাপল এবং প্রো ভিডিও জগতের বাইরে ব্যাপক সমর্থন নেই।

  • Avid এর DNxHD ProRes একটি অনুরূপ কোডেক, কিন্তু অ্যাপল প্রো ভিডিও বিশ্বের সাথে বাঁধা হয় না। AVID প্রস্তাব অবাধে ডাউনলোডযোগ্য কোডেক উইন্ডোজ এবং ম্যাকিনটোশ উভয়ের জন্য, এবং FFmpeg এখন এটির মাধ্যমে সমর্থন করে -c:v dnxhd

    কারণ DNxHD ProRes- এর মত একটি প্রোফাইল ভিত্তিক কোডেক, আপনি প্রোফাইলটি চয়ন করেন পূর্বনির্ধারিত সেট , এবং যে কোডেক যা সাইজ, ফ্রেম রেট, এবং বিট হার ফ্রেম ব্যবহার ফ্রেম বলে। বিগ বক বুনি টেস্ট ফাইলের জন্য, দী -b:v 60M প্রোফাইল সবচেয়ে উপযুক্ত। অদ্ভুতভাবে, ফলে ফাইল সম্পর্কে 59 মেগাবিট / সে

  • কম ক্ষতি MJPEG : -vcodec mjpeg -qscale:v 1 - এটি ক্ষতিকারক JPEG এর চেয়ে অনেক বেশি সাধারণ। আসলে, এটি একবার বেশ সাধারণ ভিডিও এডিটিং কোডেক ছিল এবং এটি এখনও ঘন ঘন স্ট্রিমিং ভিডিও ক্যামেরাগুলির মতো জিনিসগুলির দ্বারা ব্যবহৃত হয়। ইতিহাসের যে সমস্ত অর্থ এটি সমর্থন করে এমন সফ্টওয়্যার খুঁজে পাওয়া সহজ।

    এই কোডেক থেকে তথ্য হার বেশ প্রশস্ত পরিবর্তনশীলতা আশা। আমি এখানে তৈরি একটি পরীক্ষা আমাকে দিয়েছে 25 মেগাবিট / সে 720p ভিডিও জন্য। যে ক্ষতি সম্পর্কে আমার স্নায়বিক করতে উচ্চ যথেষ্ট সংকোচন, কিন্তু এটা আমার কাছে বেশ ভাল লাগছিল। একমাত্র ডেটা হারের উপর ভিত্তি করে, আমি সম্ভবত এটি মানের মানের হিসাবে সম্ভবত বলতে চাই 12 মেগাবিট / সে MPEG-2 বা 6 মেগাবিট / সে H.264 তে।

একসাথে এই সব নির্বাণ:

$ ffmpeg -i frame%04d.png -c:v prores_ks -profile:v 4444 output.mov
  ...or...                -c:v prores_ks -profile:v hq   output.mov
  ...or...                -c:v prores                    output.mov
  ...or...                -c:v dnxhd -b:v 60M            output.mov
  ...or...                -c:v mjpeg -qscale:v 1         output.avi

এই পদ্ধতিগুলির উপর নিচের লাইনটি হল যে আপনি যদি কিছু দাবি করছেন না তবে "যথেষ্ট ভাল" সত্যিই যথেষ্ট ভাল।


পাদটীকা এবং Digressions

  1. কমান্ডটি লিনাক্স, ম্যাকোএস, বিএসডি এবং ইউনিক্সের মতো কাজ করা উচিত। আপনি যদি উইন্ডোজে থাকেন তবে আপনি POSIX কমান্ড লাইনটি পেতে পারেন Cygwin অথবা WSL

  2. যে কমান্ড দ্বারা উত্পাদিত তালিকাটি উপরের আলোচনার জন্য আমি নির্বাচিত কোডেকের সেটটি পুরোপুরি মেলেনি তার কয়েকটি কারণ রয়েছে:

    • দ্বিতীয় grep মত অনুপযুক্ত এনকোডার ফিল্টার আউট বোঝানো হয় bmp ট্যাগ করা সত্ত্বেও, যা "ভিডিও" কোডেক হয় না V এই তালিকায়। টেকনিক্যালিভাবে আপনি সম্ভবত এটিগুলিকে এভিআই, এমপি 4, অথবা এমকেভির মতো একটি কন্টেইনারে স্টাইল করতে পারবেন, এটি একটি একক ফাইল ভিডিও পেতে পারে, তবে ফাইলটি কোনও প্রোগ্রামের উপর ভিত্তি করে পাঠযোগ্য হবে না ffmpeg অথবা libavcodec

      এই যেমন, কিছু ব্যতিক্রম আছে -f avi -c:v ljpeg এমন কিছু দেয় যা আপনি "লসলেস এমজেপিইজি" কল করতে পারেন, কিন্তু একটি নিয়ম হিসাবে, আমরা একটি চলচ্চিত্র তৈরি করতে এখানে অনেকগুলি-চিত্র ফাইলগুলি একটি এ / ভি কন্টেইনারে স্টাফ করতে আগ্রহী নই। আমরা এখানে ব্যাপকভাবে স্বীকৃত ভিডিও কোডেকগুলি চাই, সেমেটিক ট্রিকেরি নয়।

    • কমান্ড বর্তমানে GIF হিসাবে কিছু অনুপযুক্ত এনকোডার ফিল্টার করতে ব্যর্থ হয়েছে কারন এটি বর্তমানে বর্ণিত নয় ffmpeg -codecs হিসাবে আউটপুট bitmap অথবা image ফাইল ফরম্যাট।

      জিআইএফ একটি আকর্ষণীয় ঘটনা: এটি একটি প্লেব্যাকের একাধিক চিত্র ফ্রেমকে গতি প্লেব্যাকের সময় সম্পর্কিত তথ্য সহ সমর্থন করে তবে বেশ কয়েকটি কারণে এটি আমাদের আলোচনায় সম্পূর্ণরূপে অনুপযুক্ত।

    • দেখানো বিকল্পগুলির মধ্যে কয়েকটি অপ্রচলিত বা কখনও কখনও অনেক ট্র্যাকশন পাওয়া যায় নি flashsv, dirac, এবং snow, তাই এটা উপরের আলোচনা তাদের মূল্য নেই।

    • সেই তালিকার কিছু বিকল্প কেবলমাত্র পাইপলাইনে ব্যবহারের জন্যই বোঝানো হয় ffmpeg উদাহরণ বা মধ্যে ffmpeg এবং যেমন অন্য প্রোগ্রাম ,. rawvideo এবং wrapped_avframe, এবং তাই এখানে আমাদের উদ্দেশ্যে অনুপযুক্ত।

    • উপরের আলোচনার শেষে, আমি কিছুটা সাবধানে নির্বাচিত ক্ষতির বিকল্পগুলি অন্তর্ভুক্ত করার জন্য প্রশ্নটির সুযোগটি বিস্তৃতভাবে বিস্তৃত করেছি, যাতে তারা প্রথম পাস করে না। grep উপরের কমান্ড ফিল্টার করুন।


1
অনেকগুলি চেষ্টা করার পরে, অনেকগুলি অসম্প্রৃত / ক্ষতিহীন ফর্ম্যাটগুলি যা প্রভাবগুলি আমদানি করার পরে এটি সন্ধান করতে পারে, আপনার কুইকটাইম শেষ পর্যন্ত এটি করেছে। রেফারেন্সের জন্য এটি ছিল ffmpeg -i input.avi -c:v qtrle -pix_fmt rgb24 output.mov
felwithe

@ লর্ড এনকবিয়ার্ড: আমি উট ভিডিও যুক্ত করেছি।
Warren Young

9

তাই আমি শেষ পর্যন্ত আমার নিজের উত্তর তৈরীর শেষ পর্যন্ত।
টিএল; ডিআর সারাংশ: ছবির ক্রমানুসারে সংরক্ষণ করার জন্য, ব্যবহার করুন libx264 অথবা libx264rgb সঙ্গে -preset ultrafast -qp 0। এটি ffvhuff হিসাবে প্রায় হিসাবে দ্রুত, অনেক কম বিটরেট এবং দ্রুত ডিকোডগুলির সাথে। huffyuv ffmpeg এর বাইরে আরও ব্যাপকভাবে সমর্থিত, কিন্তু হিসাবে অনেক পিক্সেল ফর্ম্যাট সমর্থন করে না ffvhuff। তাই ২২64 ব্যবহার করার আরেকটি কারণ হ'ল আপনার অন্যান্য সরঞ্জামগুলি হ্যান্ডেল করতে পারে ২২64 High 4:4:4 Predictive প্রোফাইল যে x264 lossless মোড ব্যবহার করে। x264 ইচ্ছাকৃত ফ্রেম দ্রুত র্যান্ডম অ্যাক্সেস প্রয়োজন হলে অন্তর শুধুমাত্র করতে পারেন।

একটি সাবধান ffmpeg বাগ ইমেজ ডিরেক্টরি থেকে পড়া যখন libx264rgb প্রভাবিত। (এবং অন্যান্য ক্ষেত্রে কি জানেন।) ব্যবহার করার আগে আপনার সেটআপ মধ্যে losslessness জন্য পরীক্ষা। (সঙ্গে সহজ ffmpeg -i in -pix_fmt rgb24 -f framemd5 উৎস এবং lossless- সংকুচিত))

সম্পাদনা: utvideo এনকোড এবং ডিকোড মোটামুটি দ্রুত, এবং h.264 এর চেয়ে অনেক সহজ কোডেক। এটি মূলত একটি আধুনিক huffyuv, আরো দরকারী রং স্থান জন্য সমর্থন সঙ্গে। যদি আপনার কোনও সমস্যা থাকে h.264, অস্থায়ী ফাইলগুলির জন্য পরবর্তীটি ব্যবহার করুন।

edit2: একটি RGB কোডেক হিসাবে PNG কমপক্ষে সিন্টেল ট্রেলারের উপর ভাল কাজ করে।

একই প্রশ্নে আমার অনুরূপ উত্তরটি দেখুন: https://superuser.com/a/860335/20798

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

এই প্রসঙ্গে "ক্ষতিগ্রস্ত" এর সবচেয়ে কার্যকর সংজ্ঞা হল আপনি ইনপুটটি বিট-বিট-বিট পুনরুদ্ধার করতে পারেন। আপনি কি করবেন তা নির্বিশেষে ভিডিও এনকোডিং থেকে মানের অবনতি সম্পর্কে জিরো চিন্তিত।

http://en.wikipedia.org/wiki/Chroma_subsampling

আদর্শভাবে, একাধিক রং স্পেস রূপান্তর এড়াতে। গোলাকার ত্রুটি সম্ভাব্য বিল্ড আপ করতে পারেন। যদি আপনি আপনার ভিডিওতে RGB রং স্পেসে কাজ করে এমন ফিল্টারগুলির সাথে কাজ করতে যাচ্ছেন তবে এটি RGB কে বোঝা যায়, যতক্ষণ উচ্চতর বিট্রেটগুলি কোনও সমস্যা নয়। আপনি সম্ভবত শেষ পর্যন্ত একটি উত্পাদন করতে যাচ্ছেন yuv 4:2:0 ভিডিও, তবে অতিরিক্ত ক্রোমো রেজোলিউশন রাখা সম্ভাব্য উপকারী, আপনি কোন ফিল্টারগুলি প্রয়োগ করতে যাচ্ছেন তার উপর নির্ভর করে।

উভয় উপায়ে, lossless x264 এবং ffvhuff উভয় সমর্থন RGB এবং yuv 4:4:4, 4:2:2, এবং 4:2:0। আমি X264 সুপারিশ চাই, এটি দ্রুত ডিকোড হিসাবে। যদি আপনি রিয়েলটাইমতে আরজিবি এইচডি ভিডিওটি চালানোর চেষ্টা করছেন তবে xv এর পরিবর্তে opengl চেষ্টা করুন, কারণ আমার সিস্টেমে xv শুধুমাত্র yuv ইনপুট গ্রহণ করে। mplayer একটি রঙ-স্থান রূপান্তর করতে অতিরিক্ত CPU সময় গ্রহণ করা হয়।

নিম্নলিখিত এনকোডার পরীক্ষার জন্য উত্স: https://media.xiph.org/ https://media.xiph.org/sintel/sintel_trailer-1080-png.tar.gz তারা সিন্টেল ট্রেলারের জন্য y4m ফাইলগুলিকে gzip করতে ভুলে গেছেন, তাই PNG টারববল আসলে অনেক ছোট।

ffmpeg -i 1080/sintel_trailer_2k_%4d.png -i sintel_trailer-audio.flac \
-c:a copy -c:v libx264rgb -preset ultrafast -qp 0 \
frompng.sintel.264rgb.mkv

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

peter@tesla:/mnt/GP1TB/p/encoder-sample/sintel$ time ffmpeg -i 1080/sintel_trailer_2k_%4d.png -i sintel_trailer-audio.flac -c:a copy -c:v libx264rgb -preset ultrafast -qp 0 frompng.sintel.264rgb.mkv
ffmpeg version N-67983-g2b358b4 Copyright (c) 2000-2015 the FFmpeg developers
  built on Jan 10 2015 05:32:37 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --enable-gpl --enable-version3 --enable-nonfree --disable-doc --disable-ffserver --enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libopus --enable-libwebp --enable-libvpx --disable-outdev=oss --disable-indev=oss --disable-encoder=vorbis --enable-libvorbis --enable-libfdk-aac --disable-encoder=aac --disable-decoder=jpeg2000
  libavutil      54. 16.100 / 54. 16.100
  libavcodec     56. 20.100 / 56. 20.100
  libavformat    56. 18.100 / 56. 18.100
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  7.100 /  5.  7.100
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, image2, from '1080/sintel_trailer_2k_%4d.png':
  Duration: 00:00:50.12, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24, 1920x1080 [SAR 72:72 DAR 16:9], 25 fps, 25 tbr, 25 tbn, 25 tbc
Input #1, flac, from 'sintel_trailer-audio.flac':
  Duration: 00:00:52.00, start: 0.000000, bitrate: 721 kb/s
    Stream #1:0: Audio: flac, 48000 Hz, stereo, s16
File 'frompng.sintel.264rgb.mkv' already exists. Overwrite ? [y/N] y
No pixel format specified, rgb24 for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264rgb @ 0x2770760] using SAR=1/1
[libx264rgb @ 0x2770760] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64 SlowShuffle
[libx264rgb @ 0x2770760] profile High 4:4:4 Predictive, level 4.0, 4:4:4 8-bit
[libx264rgb @ 0x2770760] 264 - core 144 r2525+2 6a4fca8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=0 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=0 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=cqp mbtree=0 qp=0
Output #0, matroska, to 'frompng.sintel.264rgb.mkv':
  Metadata:
    encoder         : Lavf56.18.100
    Stream #0:0: Video: h264 (libx264rgb) (H264 / 0x34363248), rgb24, 1920x1080 [SAR 72:72 DAR 16:9], q=-1--1, 25 fps, 1k tbn, 25 tbc
    Metadata:
      encoder         : Lavc56.20.100 libx264rgb
    Stream #0:1: Audio: flac ([172][241][0][0] / 0xF1AC), 48000 Hz, stereo (16 bit)
Stream mapping:
  Stream #0:0 -> #0:0 (png (native) -> h264 (libx264rgb))
  Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 1253 fps= 18 q=-1.0 Lsize=  834790kB time=00:00:51.96 bitrate=131592.5kbits/s
video:830198kB audio:4575kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.002025%
[libx264rgb @ 0x2770760] frame I:6     Avg QP: 0.00  size:612470
[libx264rgb @ 0x2770760] frame P:1247  Avg QP: 0.00  size:678787
[libx264rgb @ 0x2770760] mb I  I16..4: 100.0%  0.0%  0.0%
[libx264rgb @ 0x2770760] mb P  I16..4: 50.3%  0.0%  0.0%  P16..4: 12.0%  0.0%  0.0%  0.0%  0.0%    skip:37.6%
[libx264rgb @ 0x2770760] coded y,u,v intra: 71.1% 68.2% 70.0% inter: 22.8% 22.8% 23.2%
[libx264rgb @ 0x2770760] i16 v,h,dc,p: 50% 48%  1%  1%
[libx264rgb @ 0x2770760] kb/s:135693.94

উল্লেখ্য যে আমি উল্লেখ করতে ভুলে গেছি -r 24 fps, তাই এটি অডিও সাথে AV সিঙ্ক রাখা হবে না। (এবং বিট্রেট (ফাইল আকারের নয়) সংখ্যাও বন্ধ হবে। ffmpeg ডিফল্ট 25fps)। এই মেশিনে সিপিইউ 1 ম জেনারেল (কন্রো) কোর 2duo 2.4GHz (E6600)।

ফলাফল:

4.5M    sintel_trailer-audio.flac  # this is muxed in to every mkv
948M    1080  # the directory of PNGs
940M    /var/tmp/dl/sintel_trailer-1080-png.tar.gz
7434M   sintel.y4m  # yuv444, uncompressed.  mplayer gets the colors wrong?
2342M   qtrle.mkv   # encode went at 16fps, so qtrle is slower and worse filesize
2105M   sintel.huff.mkv  # ffvhuff with default options, rgb pix fmt
1228M    sintel.utvideo.mkv  # muxed without audio, I should update the others this way
946M    png-copy.mkv  # -codec copy makes a MPNG stream.  Use -codec png for non-png sources, but it won't make PNGs as small.  Decodes very fast
824M    lossy.prores_ks.mov # yuv444p10le extremely slow to encode (2.3fps), and worse bitrate.
816M    frompng.sintel.264rgb.mkv
735M    sintel.x264rgb.medium.nocabac.mkv  # encode went at 3.3 fps instead of 18.  Better gain than for live-action, though
626M    sintel_trailer.rgb.lossless.veryslow.mkv # 1.1fps.  With CABAC, 16 ref frames, etc. etc.
512M    lossy.prores.mov # yuv422p10le, 12fps
341M    sintel.yuv420.x264.lossless.mkv
21M     lossy.rgb.crf26.preset=medium.mkv
13M     lossy.yuv420.crf26.preset=medium.mkv  # remember this is WITH 4.5MB audio

মনে রাখবেন যে mediainfo আরজিবি এইচ ২64 সম্পর্কে জানা নেই, এটি এখনও বলে যে ফাইলগুলি YUV।

এটি সত্যিই ক্ষতিগ্রস্ত ছিল তা পরীক্ষা করুন:

ffmpeg -i 1080/sintel_trailer_2k_%4d.png -f framemd5 png.framemd5
ffmpeg -i fromhuff.sintel.264rgb.mkv -an -sn -pix_fmt rgb24  -f framemd5 x264rgb.framemd5
diff -s *.framemd5
Files png.framemd5 and x264rgb.framemd5 are identical

সুতরাং আপনি আসল PNG ইনপুটটি যেভাবে পুনরুদ্ধার করতে পারেন, অর্থাত আপনি তাদের মধ্যে একই চিত্র তথ্য দিয়ে PNG তৈরি করতে পারেন।

মনে রাখবেন -pix_fmt rgb24 x264 পরীক্ষা জন্য। ffmpeg এর h.264 ডিকোডার আউটপুট gbrp (প্ল্যানার, প্যাক করা হয়নি) আউটপুট, তাই বিট একই, কিন্তু একটি ভিন্ন ক্রম। ফ্রেমএমডি 5 "ধারক" কোনও ধরণের বিন্যাস সীমাবদ্ধতা প্রয়োগ করে না, তবে বিটগুলি একইভাবে সাজানো থাকলেও আপনি একই MD5 পাবেন। আমি শুধু FMPpeg কি বলেছি এটি একটি পিক্স পিএমটি ব্যবহারের জন্য ব্যবহার করা হয়েছিল যখন আমি এটি PNGs খাওয়ানো, তারপর যে যুক্তি হিসাবে ব্যবহৃত -pix_fmt ডিকোড জন্য। ঘটনাক্রমে, এই কারণে ভিএলসি আরজিবি এইচ ২64 ফাইলগুলি চালাবে না (পরবর্তী রিলিজ বা বর্তমান রাতের বেলায়): এটি gbrp পিক্সেল ফর্ম্যাট সমর্থন করে না।

Yuv ব্যবহারের জন্য libx264, না libx264rgb। আপনি x264 এর একটি RGB সংস্করণ ইনস্টল করতে হবে না, প্রকৃত লাইব্রেরি উভয় সমর্থন করে। এটি কেবল ffmpeg যা এটি দুটি পৃথকভাবে এনকোডার হিসাবে প্রয়োগ করে। আমি মনে করি তারা যদি এটি না করে তবে ডিফল্ট আচরণটি rgb ইনপুটটি rgb হিসাবে ছেড়ে চলে যেতে হবে এবং একই গুণমানের জন্য উচ্চতর বিটরেট আউটপুট তৈরির সময় ধীরে ধীরে চালানো হবে। (আপনি এখনও কখনও কখনও ব্যবহার করতে হবে -pix_fmt yuv420p তুমি যদি চাও 420 পরিবর্তে 444 এইচ .264 আউটপুট।

আপনি দীর্ঘমেয়াদী স্টোরেজ জন্য ফাইল তৈরি করা হয় না, সর্বদা ব্যবহার করুন -preset ultrafast lossless x264 জন্য। আরো রেফারেন্স ফ্রেম এবং গতি অনুসন্ধান কোনও শব্দের সাথে অ-অ্যানিমেটেড উপাদানগুলির জন্য ক্ষতিকারক কোনও পার্থক্য তৈরি করে না। CABAC হ্রাসহীন বিট্রেটে বিপুল পরিমাণ CPU গুলি চালায় এমনকি ডিকোড করতেও। শুধুমাত্র সংরক্ষণাগার উদ্দেশ্যে, স্ক্র্যাচ ফাইলের জন্য ব্যবহার করুন। (আল্ট্রাফাস্ট CAABAC নিষ্ক্রিয়)। CABAC 10 থেকে 15% বিট্রেট সঞ্চয় দেয়।

যদি আপনি একটি ফ্রেম হতে প্রতিটি ফ্রেম প্রয়োজন, সেট -keyint 1। তারপরে ভিডিও এডিটিং সফটওয়্যার যা শুধুমাত্র কী ফ্রেমগুলি বা w / e কে কাটতে চায় তা আপনাকে সীমাবদ্ধ করবে না।

আসল প্রশ্নটির উত্তর দিতে: আপনি পর্যায়গুলিতে জিনিসগুলি চেষ্টা করার সময় প্রায় অস্থায়ী ফাইলগুলি নিক্ষেপ করার জন্য এটি করতে হবে (উদাঃ একটি ধীরে ধীরে ডিন্টার্লেস, অন্যান্য জিনিসগুলি চেষ্টা করার আগে ক্ষতিহীন আউটপুট সংরক্ষণ করা):

ffmpeg -i dv-video-source.ts -vf yadif=2:1,mcdeint=3:1:10 -c:a copy -c:v libx264 -preset ultrafast -qp 0 deinterlaced.mkv

আপনি ইমেজ ফাইলগুলিতে সত্যিই আপনার আউটপুট প্রয়োজন হলে আপনি এখনও-ইমেজ সরঞ্জামগুলির সাথে সংশোধন করতে পারেন, তারপরে নিশ্চিত করুন, ডিজিড করুন png। আপনি প্রতিটি পিক্সেলের জন্য Y, Cb, এবং Cr মানগুলির প্রতিটিটির জন্য 8 বিটগুলির মধ্যে কমপক্ষে উল্লেখযোগ্য কিছু থেকে বেশি কিছু হারাতে যাবেন না।

x264 আসলেই ভালভাবে বেরিয়ে আসে কারণ কিছুটা কালো ফ্রেম রয়েছে, একটি ফেইড-ইন এবং ফেইড-আউট এবং অনেকগুলি ফ্রেমের বড় অংশগুলির মধ্যে নিখুঁত সাদৃশ্য রয়েছে, যা এটি এমনকি এর সাথে সদ্ব্যবহার করতে পরিচালিত করে। -preset ultrafast। লাইভ-অ্যাকশন, আমি এখনও ffvhuff (yuv420) ফাইলাইজ অর্ধেক x264 দেখুন।

কারও জন্য অদ্ভুত: হাই-সিপিইউ-টাইম লসলেস RGB এনকোডটি ছিল (x264 কোর 144 r2525):

[libx264rgb @ 0x35b97a0] frame I:27    Avg QP: 0.00  size:604367
[libx264rgb @ 0x35b97a0] frame P:1226  Avg QP: 0.00  size:517512
[libx264rgb @ 0x35b97a0] mb I  I16..4..PCM: 46.3% 38.1% 15.7%  0.0%
[libx264rgb @ 0x35b97a0] mb P  I16..4..PCM: 24.3%  5.4%  4.5%  0.0%  P16..4: 10.5%  3.3%  5.7%  0.0%  0.0%    skip:46.3%
[libx264rgb @ 0x35b97a0] 8x8 transform intra:17.3% inter:46.1%
[libx264rgb @ 0x35b97a0] coded y,u,v intra: 81.6% 77.5% 80.0% inter: 28.0% 27.7% 28.1%
[libx264rgb @ 0x35b97a0] i16 v,h,dc,p: 35% 64%  1%  0%
[libx264rgb @ 0x35b97a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 49% 13%  2%  1%  1%  1%  1%  1%
[libx264rgb @ 0x35b97a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 37%  5%  5%  6%  5%  5%  4%  3%
[libx264rgb @ 0x35b97a0] Weighted P-Frames: Y:41.1% UV:40.7%
[libx264rgb @ 0x35b97a0] ref P L0: 74.5%  4.2%  9.1%  4.1%  2.1%  1.7%  1.2%  0.8%  0.6%  0.5%  0.3%  0.2%  0.2%  0.2%  0.2%  0.1%
[libx264rgb @ 0x35b97a0] kb/s:99721.66

ওজনযুক্ত পি ফ্রেমের সত্যিই উচ্চ ভগ্নাংশ, এবং স্ক্র্যাপ ম্যাকroblocks সত্যিই উচ্চ ভগ্নাংশ নোট করুন। প্রতিটি দৃশ্য রূপান্তর একটি বিবর্ণ, একটি কাটা নয়, এবং x264 সুবিধাটি নেয় যদি আপনি এটি সিপিইউ সময়টি কীভাবে বের করতে পারেন।

আরও নোট (সম্পাদনা করার জন্য ক্ষতিকারক কোডেক):

ক্লিপগুলির মাধ্যমে ফরোয়ার্ড / পিছন দিকে স্ক্রবিংয়ের জন্য, কেবলমাত্র কেবলমাত্র কোড্রেক্সগুলি বিশেষভাবে পছন্দ করা হয় (utvideo, ffvhuff, mjpeg, jpeg2000, pro-res, AVC-Intra)। আমি মনে করি ছোট GOPs (1/2 থেকে 1 সেকেন্ড) নিয়মিত AVC কল্পনা করতে পারব, যতক্ষণ সফ্টওয়্যারটি কী করছে তা জানার যতক্ষণ পর্যন্ত সফটওয়্যারটি জানত (যতক্ষণ না দ্রুত স্ক্রব করার সময় ডিকোড হবে, GOP এর মধ্যে ডিকোড পেতে হবে একটি ইন্টার ফ্রেম যদি প্রয়োজন হয় তার জন্য টাইমলাইনে যথেষ্ট জুম করা হয়)।

আমি এই উপর কিছু নেতিবাচক জিনিস পোস্ট করেছেন https://video.stackexchange.com/ প্রো-রেস সম্পর্কে, "লসলেস কোডেকের তুলনায় এটি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে কোন সমস্যা", তবে এতে কিছু আকর্ষণীয় বৈশিষ্ট্য রয়েছে। অ্যাপল বলছে এটি 1/3 CPU এর পুরো রেজোড ডিকোডিংয়ের সময় হিসাবে ব্যবহার করে অর্ধ-রেজোলিউশনে ডিকোড করতে পারে।

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

আমি বেশিরভাগ ভিডিও সম্পাদন করি না, বেশিরভাগই শুধু এনকোডিং করি, তাই আমার কাছে কোনও ধারণা নেই যে কোডেকগুলির মতো প্রোডোর জন্য কোন পরীক্ষা উপযুক্ত হবে। আমি অনুমান করতে পারি যে হয়তো mjpeg একটি ভাল দ্রুত বিকল্প হবে, যদি ছোট-জিওপি x264 ভাল কাজ করে না। লিনাক্স ডিস্ট্রোতে jpeg এর ASM-accelerated বাস্তবায়ন রয়েছে এবং এটি একটি চমত্কার সাধারণ কোডেক। গুণমান বনাম ফাইলাইজ + এনকোড / ডিকোড গতি বন্ধ করার জন্য প্রয়োজনীয় মানের হিসাবে আপনি মান আপ বা ডাউন চালু করতে পারেন। এটি প্রাচীন, তবে আপনি যদি কেবলমাত্র দ্রুততম অন্তরক কোডেক চান তবে এটি x264 হারাতে পারে।

X264 এর জন্য আমি কিছু চাই x264 --crf 10 --keyint=1 --preset superfast --tune fastdecode (শুধুমাত্র ইন্ট্রা, অন্য যে কোন স্টাফ ছাড়া --avcintra-class সেট।) নোট superfast (CABAC ছাড়া), অথবা faster, না ultrafast সম্ভবত ক্ষতিকারক অপারেশন জন্য ভাল। আমি মনে করি অতি দ্রুত এটি এত দ্রুত না হয়ে অনেক গুণ হারিয়ে ফেলে। নিম্ন মানের (উচ্চতর ক্রফ) আপনি ব্যবহার করেন, এটি আরও ভাল CPU এনকোড খোঁজার সময় আরও বেশি সময় ব্যয় করে। এই অনেক সম্ভবত GOP আকার = 1 সঙ্গে প্রাসঙ্গিক নয়, যদিও।

GOP আকার & gt; 1, যদি আপনি এনকোডটিতে অনেকগুলি বিট নিক্ষেপ করছেন তবে অবশিষ্ট আন্তঃ-ভবিষ্যদ্বাণী অবশিষ্টাংশগুলি এনকোডিং করার সময় অনেকগুলি বিট সংরক্ষণ করবে না (কারণ শব্দ / শস্য / ফ্রেমের মধ্যে সূক্ষ্ম পরিবর্তনগুলি খুব সঠিকভাবে সংরক্ষণ করা হচ্ছে), তাহলে কেবলমাত্র সুপারফাস্ট জরিমানা। অন্যথায়, সঙ্গে --keyint=30 অথবা কিছু, সম্ভবত --preset veryfast --crf 12 আকর্ষণীয় হবে।

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


শুধু ফাইল মাপ সঙ্গে যে তালিকা জন্য ধন্যবাদ বলতে চেয়েছিলেন; দ্রুত রেফারেন্স জন্য মহান জিনিস .. Cheers!
sdaau

@ এসডাউ মনে রাখবেন যে সোর্স ভিডিওগুলি ক্যামেরা দিয়ে তৈরি সাধারণ ভিডিওগুলির থেকে অনেক আলাদা। এটি একটি 3D রেন্ডার, লেটারবক্সিংয়ের সাথে এবং ছোট দৃশ্যে অনেকগুলি ফেইড রয়েছে। এবং সম্পূর্ণরূপে এখনও একটি টেক্সট সঙ্গে ফ্রেম একটি শালীন ভগ্নাংশ। পুরোপুরি-এখনও ফ্রেমগুলি সম্পূর্ণ বেশিরভাগ-সংকোচযোগ্য, তবে এটি এখনও ইন্টার ফ্রেমগুলির (যেমন x264) সাথে কোডেকগুলিকে সমর্থন করে, আমি ক্যামেরা ফুটেজের ক্ষয়প্রাপ্ত সংকোচন কল্পনা করার চেয়ে বেশি (কোনও গোলমালের সাথে) করব।
Peter Cordes

+1: আমি লসলেস এইচ ২64 কোনও ধারণা ছিল না। আমি আমার উত্তর এটি সম্পর্কে তথ্য যোগ করেছেন। আপনার সমাধান করার জন্য আমার briefer উপস্থাপনা থেকে কিছু ধারনা নিতে মুক্ত মনে TL; ড সমস্যা। আমার নিজের উত্তরের জন্য, এটি সমস্যার জন্য এক সত্য সমাধান উপস্থাপন করার পরিবর্তে ব্যাপক হতে বোঝানো। আমাদের কাছে অনেকগুলি ভিন্ন কোডেক রয়েছে কারণ কোন একক কোডেক প্রত্যেকের চাহিদা পূরণ করে না।
Warren Young

2

আমি ffmpeg আসলে অসম্পূর্ণ ভিডিও রূপান্তর সমর্থন করে মনে হয়।
আমি ffmpeg -i input.mp4 ব্যবহার করেছিলাম - vcodec rawvideo out.avi এবং ফলে .avi ছিল প্রায় সঠিক ফাইল ফাইলের আকার। উইন্ডোজ মিডিয়া প্লেয়ারটি সঠিকভাবে এটি চালাতে সক্ষম বলে মনে হচ্ছে না তবে এটি ভার্চুয়ালডব দ্বারা পড়তে পারে এবং আমি ছবির গুণমানের কোনো ক্ষতি দেখিনি।

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