আমি এফএফএমপিএগ সহ এইচ 264 ভিডিও ফাইল থেকে কীভাবে একটি ভাল মানের জেপিইজি চিত্র বের করতে পারি?


108

বর্তমানে আমি চিত্রগুলি উত্তোলনের জন্য এই আদেশটি ব্যবহার করছি:

ffmpeg.exe -i 10fps.h264 -r 10 -f চিত্র 2 10fps.h264_% 03d.jpeg

তবে আমি কীভাবে JPEG চিত্রের মান উন্নত করতে পারি?


1
এটি "ভাল" নয়, বর্তমান মানের সাথে কী ভুল?
bjoernz

উত্তর:


215

ব্যবহার -qscale:v

-qscale:v(অথবা উপনামটি ব্যবহার করুন )-q:vআউটপুট বিকল্প হিসাবে ) । জেপিগের জন্য কার্যকর পরিসীমাটি 2-31 এর সাথে 31 টির মধ্যে সবচেয়ে খারাপ মানের। আমি 2-5 এর মান চেষ্টা করার পরামর্শ দিই।

কয়েকটি সিরিজের চিত্র আউটপুট করতে:

ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg

Single 60 সেকেন্ড সময়কালে একটি একক চিত্র আউটপুট করতে:

ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg

এটি কোনও ভিডিও ইনপুট নিয়ে কাজ করবে। আপনার ইনপুটটি এমজেপিগ থাকলে নীচে দেখুন।


MJPEG

যদি আপনার ইনপুটটি এমজেপিইগ (মোশন জেপিইজি) হয় তবে চিত্রগুলি কোনও মানের ক্ষতি ছাড়াই উত্তোলন করা যেতে পারে।

ffmpegঅথবা ffprobeকনসোলে আউটপুট আপনাকে বলতে যদি আপনার ইনপুট MJPEG হয় করতে পারেন:

$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg

তারপরে আপনি mjpeg2jpegবিটস্ট্রিম ফিল্টার ব্যবহার করে ফ্রেমগুলি বের করতে পারবেন :

$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg

এছাড়াও দেখুন


এটি আমার পক্ষে কোনও প্রভাব ফেলেছে বলে মনে হচ্ছে - qscale 1 এবং 2 উভয়ই অভিন্ন ফাইলের মাপ দেয় এবং (আমার নগ্ন চোখের দিকে) কিউস্কেল ছাড়াই একরকম প্রদর্শিত হয়।
felwithe

আপনি যে সম্পূর্ণ কমান্ডলাইন ব্যবহার করছেন তা পোস্ট করতে পারেন? এছাড়াও দয়া করে কমান্ডলাইনে ffmpeg থেকে সম্পূর্ণ, অপ্রচলিত আউটপুট পোস্ট করুন। নোট করুন যে বিকল্পগুলির বসানো প্রাসঙ্গিক, সুতরাং-স্ক্যাসেল: ভি 2 -i ইনপুট ফাইল বিকল্পের পরে স্থাপন করা দরকার, তবে কোনও প্রভাব ফেলতে আউটপুট ফাইল বিকল্পের আগে।
রোনাল্ড এস বুলতজে

1
আমার জন্য ফাইলের আকার দ্বিগুণ করা -qmin 1 -qmax 1ছাড়াও -q:v 1। এবং আমি খুব সামান্য উন্নতিও দেখতে পাব।
অনুমানযোগ্য

1
@ কমপ্লেস্টিক: -qmin 1 -qmax 1বড় ফাইলের ফলে, তবে আমাকে ঠিক একই চিত্র দেয়। আমি ফটোশপ, 2 স্তর এবং পার্থক্য ফিল্টারের মাধ্যমে এটিকে বৈধতা দিয়েছি। পিক্সেল একই।
চেরোভিম

@Kostanos আপনি চেষ্টা করতে পারেন -qmin 1 -q:v 1
লগন

0

চিত্রগুলি একটি ক্ষতিহীন বিন্যাসে যেমন পিএনজি আউটপুট দেয়:

ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.png

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

-qmin 1 -q:v 1সরাসরি জেপিইজি হিসাবে আউটপুট করা এবং জেপিইজি ফর্ম্যাটে কিছুটা তীক্ষ্ণ চিত্র পাওয়া সম্ভব ffmpeg


ffmpegআউটপুট PNG8ফাইলগুলি যা কেবল 256 টি রঙ (জিআইএফ-এর মতো) ব্যবহার করে। সুতরাং এটি আসলে খুব ক্ষতিগ্রস্ত।
ল্যাপিন

@ ল্যাপিন এই পদ্ধতিটি ব্যবহার করে আমি যে পিএনজি বের করেছি সেগুলি 24 বিট (এমনকি 256 টিরও কম রঙের ফ্রেমের জন্য, যদিও অন্যদের আরও অনেক কিছু রয়েছে)। এটি উইন্ডোজে 4.2.1 x64 সংস্করণ ব্যবহার করছিল। এখানে আরও লেখা আছে : "আমি যদি এমপিথেকে পিএনজি টানি, এই [ ffmpeg] আদেশের সাথে, আমি উচ্চ মানের মানের পিএনজি পাই যা মূল ভিডিওর সাথে একই মানের ident" ffmpegআপনি PNG8ফাইলগুলির আউটপুট তৈরির কোন সংস্করণ ব্যবহার করছেন এবং আপনার ইনপুট ফর্ম্যাটটি কী?
জেক

আসলে আমি মনে করি আপনি ঠিক বলেছেন, সমস্যাটি তখন identify image.png"8-বিট" ফলাফল দেয় যখন প্রকৃতপক্ষে এটি কোনও একক চ্যানেল 8-বিট নয়, তবে আর, জি এবং বি আইডিকে 8-বিট হিসাবে গড় identifyব্যবহারকারীর বুঝতে হবে যে যে।
ল্যাপিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.