আমি কীভাবে সিএফএফ এনকোডিং এফএফএমপিএজে এনভেনসি ব্যবহার করতে পারি?


14

এটি 2 জিবি থেকে 300 এমবি ভিডিওর (1080p) আকার পরিবর্তন করার জন্য আমার বর্তমান কমান্ড, তবে এতে অনেক সময় লাগে:

mkdir newfiles  
for %%a in ("*.mp4") do ffmpeg -i "%%a" -c:v  libx264 -preset slow -crf 21 -c:a aac -b:a 128k -vf scale=678:-2 "newfiles\%%~na.mp4"  
pause

আমি আমার এনভিআইডিএ জিটিএক্স ১০০70০-এর সাহায্যে চেষ্টা করেছি:

mkdir newfiles  
for %%a in ("*.mp4") do ffmpeg -i "%%a" -c:v h264_nvenc -preset slow -c:a aac -b:a 128k -vf scale=678:-2 "newfiles\%%~na.mp4"  
pause

আউটপুট আকার সর্বদা 3⨉ বা 5⨉ মূল আকার হয় - ন্যাভেনচ ব্যবহার করে না -crf

তাহলে আমি কীভাবে উচ্চ মানের এবং ছোট আকারের কোনও ভিডিও রূপান্তর / আকার পরিবর্তন করতে ffmpeg সহ nvenc ব্যবহার করব? এনকোডিংয়ের জন্য আমার কি জিপিইউ ব্যবহার করা উচিত?


আপনি আপনার প্রথম কমান্ডে পরিবর্তন slowকরতে পারেন fast। সিআরএফ কার্যকর করা হয়নি nvenc
জ্ঞান

এনভিএনসি-র লক্ষ্য হ'ল রিয়েল-টাইম ভিডিও এনকোডিং (ভিডিও কলগুলির মতো জিনিসের জন্য) অনুমতি দেওয়া; মান একটি অধস্তন বিবেচনা।
সিএল

উত্তর:


19

সিআরএফ-ভিত্তিক এনকোডগুলির জন্য, নীচে স্নিপেটে নিম্নলিখিত যুক্তিগুলি এফএফপিপেতে পাস করুন:

-c:v h264_nvenc -rc:v vbr_hq -cq:v 19 -b:v 2500k -maxrate:v 5000k -profile:v high

অবশ্যই, আপনি লক্ষ্য বিট হার এবং একটি নির্দিষ্ট cqমান জন্য সামঞ্জস্য করতে হবে । 19 হ'ল এটির দৃষ্টিভঙ্গি 0-এর সমান হিসাবে প্রস্তাবিত সেটিংস, তবুও ফাইল আকারে ভাল সংকোচনের বাণিজ্য সংরক্ষণ করে। সিআরএফ কী করে সে সম্পর্কে আরও জানতে এই লিখনটি দেখুন।

নোট করুন যে -cqস্কেলটি লোগারিথমিক, এর অর্থ 0 0 মূলত ক্ষয়হীন এবং 51 এর চূড়ান্ত খারাপ।

বি-ফ্রেমগুলির মতো বিকল্পগুলি যোগ করে গুণমানের আরও উন্নতি করা যেতে পারে (এটি সর্বাধিক 3 এ সীমাবদ্ধ করুন এবং এটির জন্য H.264 প্রধান প্রোফাইল প্রয়োজন হয় Base বেসলাইন প্রোফাইলগুলি বি-ফ্রেমগুলিকে সমর্থন করে না this এটি করতে পাস -bf {uint}করুন ভিডিও এনকোডার, এর -bf:v 4ফলে 4 বি-ফ্রেম ব্যবহার করে এনকোডার হবে।

এখানে মূল অংশগুলি হ'ল -cq:v 19এবং -rc:v vbr_hqযুক্তি, যা 19 এর সিআরএফ মান মেনে চলার সময় আপনাকে প্রিসেট ভেরিয়েবল বিটরেট এবং সর্বাধিক অনুমোদিতযোগ্য বিটরেট ( -b:vএবং -maxrate:v) উভয় দিয়ে এনকোডার টিউন করতে দেয় ।

এবং এখন, এনভিইএনসি সম্পর্কে ছোট ছোট নোট এবং উচ্চ মানের এনকোডের জন্য এটি টিউন করছে:

অন্যান্য হার্ডওয়্যার-ভিত্তিক এনকোডারের মতো এনভিইএনসি-রও বেশ কয়েকটি সীমাবদ্ধতা রয়েছে এবং বিশেষত এইচভিসি-র সাথে, এখানে সীমাবদ্ধতাগুলি রয়েছে:

  1. পাস্কালে:

    এইচভিসি এনকোডের জন্য, নিম্নলিখিত সীমাবদ্ধতাগুলি প্রযোজ্য:

    • 32-র উপরে সিটিইউ আকারগুলি সমর্থিত নয়।
    • এইচইভিসিতে বি-ফ্রেমগুলিও সমর্থিত নয়।
    • এনভিইএনসি এনকোডার দ্বারা সমর্থিত টেক্সচার ফর্ম্যাটগুলি এনকোডারটি যে রঙের সাথে কাজ করতে পারে তা সীমাবদ্ধ করে। আপাতত, আমাদের 4: 2: 0 (8-বিট) এবং 4: 4: 4 (10-বিটের জন্য) সমর্থন রয়েছে। 4: 2: 2 10-বিটের মতো বহিরাগত ফর্ম্যাটগুলি সমর্থিত নয়। এটি এমন কিছু ওয়ার্কফ্লোগুলিকে প্রভাবিত করবে যেখানে এই জাতীয় রঙের স্থান প্রয়োজন।
    • দেখুন সামনের নিয়ন্ত্রণটিও 32 ফ্রেমের মধ্যে সীমাবদ্ধ। আপনি আরও বিশদের জন্য এই সম্পাদকীয়টি দেখতে চাইতে পারেন ।

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

  1. এবং ম্যাক্সওয়েল জেনার 2 (GM200x সিরিজ জিপিইউ) তে:

    এইচভিসি এনকোডিংয়ে নিম্নলিখিত বৈশিষ্ট্যগুলির অভাব রয়েছে:

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

উদাহরণস্বরূপ, পাস্কলে এইচ .264 এনকোডের জন্য ভার্টেড প্রেডিকশন মোডের জন্য এনভিইএনসি এসডিকে 8.0x বা তার বেশি প্রয়োজন এবং এই এনকোড মোডটি বি-ফ্রেম সমর্থনও অক্ষম করবে। তেমনি, এনভিইএনসি-র সাথে এনভিডিয়া পারফরম্যান্স প্রিমিটিভস (এনপিপি) চালিত হার্ডওয়্যার-ভিত্তিক স্কেলারের সংমিশ্রণ স্কেলিং আর্টিফ্যাক্টিংয়ের ব্যয়ে ভিডিও স্কেলিং অ্যাপ্লিকেশনগুলির সাথে বিশেষত উত্সাহিত সামগ্রী সহ পারফরম্যান্স উন্নতিগুলি প্রবর্তন করতে পারে। এনপিপির স্কেলিং ফাংশনগুলি জিপিইউতে সিডিডিএ কোরগুলি বন্ধ করে দেওয়ার কারণে ভিডিও এনকোড পাইপলাইনটি একই প্রভাবিত করে এবং যেমন অতিরিক্ত লোড দ্বারা প্রবর্তিত পারফরম্যান্সের প্রভাবটি কেস-বাই কেস ভিত্তিতে বিশ্লেষণ করা উচিত পারফরম্যান্স-গুণমানটি নির্ধারণ করার জন্য বাণিজ্য বন্ধ গ্রহণযোগ্য।

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

এবং আপনার রেফারেন্সের জন্য:

FFmpeg এর সাহায্যে আপনি সর্বদা কাস্টমাইজেশনের জন্য কোনও এনকোডার এর সেটিংস উল্লেখ করতে পারেন:

ffmpeg -h encoder {encoder-name}

সুতরাং, এনভিএনসি-ভিত্তিক এনকোডারগুলির জন্য, আপনি চালাতে পারেন:

ffmpeg -h encoder=hevc_nvenc

ffmpeg -h encoder=h264_nvenc

আপনি এনভিএনসি-ভিত্তিক সমস্ত এনকোডার এবং এনপিপি-ভিত্তিক স্কেলারগুলি (যদি এটি নির্মিত হয়) চালিয়েও দেখতে পারেন:

for i in encoders decoders filters; do
    echo $i:; ffmpeg -hide_banner -${i} | egrep -i "npp|cuvid|nvenc|cuda"
done

আমার টেস্টবেডের নমুনা আউটপুট:

encoders:
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
decoders:
 V..... h263_cuvid           Nvidia CUVID H263 decoder (codec h263)
 V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
 V..... hevc_cuvid           Nvidia CUVID HEVC decoder (codec hevc)
 V..... mjpeg_cuvid          Nvidia CUVID MJPEG decoder (codec mjpeg)
 V..... mpeg1_cuvid          Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video)
 V..... mpeg2_cuvid          Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video)
 V..... mpeg4_cuvid          Nvidia CUVID MPEG4 decoder (codec mpeg4)
 V..... vc1_cuvid            Nvidia CUVID VC1 decoder (codec vc1)
 V..... vp8_cuvid            Nvidia CUVID VP8 decoder (codec vp8)
 V..... vp9_cuvid            Nvidia CUVID VP9 decoder (codec vp9)
filters:
 ... hwupload_cuda     V->V       Upload a system memory frame to a CUDA device.
 ... scale_npp         V->V       NVIDIA Performance Primitives video scaling and format conversion

1
দুর্দান্ত উত্তর! Nvenc এ ffmpeg উইকিটি কিছুটা পুরানো এবং সেই সমস্ত তথ্যের অভাব রয়েছে ... আপনার কাছে যদি কয়েক মিনিট থাকে, তবে আপনি যদি আপনার জ্ঞানটি এখানে অবদান রাখতে পারতেন তবে তা দুর্দান্ত হবে: trac.ffmpeg.org/wiki/HWAccelIntro
slhck

1
উত্তরের জন্য ধন্যবাদ :) ffmpeg উইকির আরও উত্তর এর প্রয়োজন
hongducwb

সাহায্য করার জন্য ধন্যবাদ. আমি এফএফম্পেগ উইকিতে এটি যুক্ত করার চেষ্টা করব।
林正浩

আউটপুট রঙের ফাইলগুলি আরও
গা like়

1
vbr_minqpমনে হচ্ছে এখন হ্রাস করা হয়েছে। একমত যে এই সিআরএফের কোনও মোড নেই বলে এই উত্তরটি ভুল বোঝাবুঝি হতে পারে h264_nvenc

4

আমি বিশ্বাস করি যে আমি একটি সমাধান পেয়েছি:

ffmpeg -hwaccel auto -i in.mp4 -c:v h264_nvenc -preset llhq -rc constqp -qp 21 -c:a copy out.mp4

দেখে মনে হচ্ছে এর -qpপরিবর্তে h264_nvenc ব্যবহার করে -crf। এই বিকল্পটি কেবল -rcসেট করা অবস্থায় কাজ করে constqp


না, -qpপ্রতিটি থেকে পৃথক -crfh264_nvenc এর -qpসমতূল্য libx264 s 'এর-qp
মীআও

@ মিও এটি আমার পক্ষে যথেষ্ট, তবে এটি জেনে রাখা ভাল যে একটি পার্থক্য রয়েছে। ভবিষ্যতে যে কেউ এটিকে দেখতে পাবে, এই পৃষ্ঠাটি সিআরএফ এবং কিউপির মধ্যে পার্থক্য ব্যাখ্যা করে।
আলেকজান্ডার

3

-crfLibx264 থেকে প্রতিস্থাপনের জন্য -cqবা h264_nvenc হতে পারে -qp:

-crf ধ্রুবক মানের মোডের জন্য গুণমানটি নির্বাচন করুন

-cq ভিবিআর রেট নিয়ন্ত্রণে ধ্রুবক মানের মোডের জন্য লক্ষ্য মানের স্তর (0 থেকে 51, 0 মানে স্বয়ংক্রিয়) সেট করুন

-qp ধ্রুবক কোয়ান্টাইজেশন প্যারামিটার হার নিয়ন্ত্রণ পদ্ধতি (-1 থেকে 51 পর্যন্ত) (ডিফল্ট -1)

দ্রুততম হার্ডওয়্যার ত্বরণযুক্ত এনকোড পদ্ধতি:

ffmpeg -hwaccel cuvid -c:v h264_cuvid -resize 640x480 -i input.mp4 -c:v h264_nvenc -cq 21 -c:a copy output.mp4

-resizeইনপুট উপর রেজোলিউশন (হার্ডওয়্যার মধ্যে); ফিল্টার --enable-libnppজন্য সংকলিত ffmpeg প্রয়োজন নেই scale_npp

আরও তথ্যের জন্য:

ffmpeg -h encoder=h264_nvenc

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