CRF- आधारित एन्कोड के लिए, FFmpeg के नीचे स्निपेट में निम्न तर्क दें:
-c:v h264_nvenc -rc:v vbr_hq -cq:v 19 -b:v 2500k -maxrate:v 5000k -profile:v high
बेशक, आपको लक्ष्य बिट दर और निश्चित cq
मूल्य के लिए समायोजित करने की आवश्यकता होगी । 19 इसकी '0 के समान दृष्टिगत रूप से अनुशंसित सेटिंग है, फिर भी फ़ाइल आकार के लिए अच्छे संपीड़न व्यापार को संरक्षित करता है। CRF क्या करता है, इसके बारे में अधिक जानने के लिए यह लिखें।
ध्यान दें कि -cq
स्केल लॉगरिदमिक है, जिसका अर्थ है कि 0 अनिवार्य रूप से दोषरहित है और 51 सबसे खराब होगा।
बी-फ्रेम जैसे विकल्पों को जोड़कर गुणवत्ता में और सुधार किया जा सकता है (इसे अधिकतम 3 तक सीमित करें, और इसके लिए H.264 मुख्य प्रोफ़ाइल और इसके बाद के संस्करण की आवश्यकता है। बेसलाइन प्रोफाइल बी-फ्रेम का समर्थन नहीं करते हैं। ऐसा करने के लिए, पास -bf {uint}
करें। वीडियो एनकोडर, -bf:v 4
4 बी-फ्रेम का उपयोग करके एनकोडर में परिणाम होगा।
यहाँ मुख्य भाग हैं -cq:v 19
और -rc:v vbr_hq
तर्क, जो आपको 19 के CRF मान का पालन करते हुए पूर्व निर्धारित चर बिटरेट और अधिकतम स्वीकार्य बिट्रेट ( -b:v
और -maxrate:v
) दोनों के साथ एनकोडर को ट्यून करने की अनुमति देते हैं ।
और अब, NVENC के बारे में छोटे नोट, और उच्च गुणवत्ता वाले एनकोड के लिए इसे ट्यूनिंग:
NVENC, किसी भी अन्य हार्डवेयर-आधारित एनकोडर की तरह, कई सीमाएँ हैं, और विशेष रूप से HEVC के साथ, यहाँ ज्ञात सीमाएँ हैं:
पास्कल पर:
HEVC एनकोड के लिए, निम्नलिखित सीमाएँ लागू होती हैं:
- 32 से ऊपर के CTU आकार समर्थित नहीं हैं।
- HEVC में बी-फ्रेम भी समर्थित नहीं हैं।
- NVENC एनकोडर द्वारा समर्थित बनावट प्रारूप उन रंग स्थानों को सीमित करता है जो एनकोडर के साथ काम कर सकते हैं। अभी के लिए, हमारे पास 4: 2: 0 (8-बिट) और 4: 4: 4 (10-बिट के लिए) का समर्थन है। बाहरी प्रारूप जैसे 4: 2: 2 10-बिट समर्थित नहीं हैं। यह कुछ वर्कफ़्लोज़ को प्रभावित करेगा जहाँ ऐसे रंगों की आवश्यकता होती है।
- देखो आगे नियंत्रण भी 32 तख्ते तक सीमित है। आप अधिक विवरण के लिए इस संपादकीय को देखना चाह सकते हैं ।
ट्यूरिंग में एचएवीसी के लिए बी-फ्रेम समर्थन और एक संदर्भ के रूप में बी-फ्रेम का उपयोग करने की क्षमता के साथ, पास्कल के लिए सभी संवर्द्धन उपलब्ध हैं। इस क्षमता पर एक उदाहरण के लिए इस उत्तर को देखें ।
और मैक्सवेल जनरल 2 (GM200x श्रृंखला जीपीयू) पर:
HEVC एन्कोडिंग में निम्नलिखित विशेषताओं का अभाव है:
मैक्सवेल के लिए यहाँ प्रभाव यह है कि विवश बिटरेट्स के तहत HEVC के साथ मोशन हैवी दृश्य लुक्सहेड फ़ंक्शंस और अनुकूली नमूना ऑफ़सेट (SAO) लूप फ़िल्टरिंग क्षमताओं के कारण विरूपण साक्ष्य (ब्लॉकनेस) से पीड़ित हो सकते हैं। पास्कल इस क्षमता में कुछ हद तक सुधार हुआ है, लेकिन एसडीके के संस्करण के आधार पर कि वीडियो एनकोडर के साथ बनाया गया था, सभी सुविधाएं उपलब्ध नहीं हो सकती हैं।
उदाहरण के लिए, Pascal पर H.264 एन्कोड के लिए भारित भविष्यवाणी मोड में NVENC SDK 8.0x और इसके बाद के संस्करण की आवश्यकता होती है, और यह एन्कोड मोड बी-फ्रेम समर्थन को भी अक्षम कर देगा। इसी तरह, एनवीईएनसी के साथ एनवीडिया परफॉर्मेंस प्राइमेटीविटी (एनपीपी) से चलने वाले हार्डवेयर-आधारित स्केलर्स के संयोजन में स्केलिंग कलाकृतियों की कीमत पर वीडियो स्केलिंग अनुप्रयोगों के साथ प्रदर्शन में सुधार हो सकता है, खासकर अपग्रेडेड सामग्री के साथ। यह भी वीडियो एनकोड पाइपलाइन को प्रभावित करता है क्योंकि एनपीपी के स्केलिंग फ़ंक्शन GPU पर CUDA कोर से चलते हैं, और इस तरह, अतिरिक्त लोड द्वारा प्रस्तुत प्रदर्शन प्रभाव का विश्लेषण केस-बेस केस पर किया जाना चाहिए ताकि यह निर्धारित किया जा सके कि प्रदर्शन-गुणवत्ता व्यापार बंद स्वीकार्य है।
इसे ध्यान में रखें: एक हार्डवेयर-आधारित एनकोडर हमेशा समतुल्य सॉफ़्टवेयर-आधारित कार्यान्वयन की तुलना में कुछ हद तक कम अनुकूलन की पेशकश करेगा, और इस तरह, आपका माइलेज और स्वीकार्य आउटपुट गुणवत्ता हमेशा भिन्न होगी।
और आपके संदर्भ के लिए:
FFmpeg के साथ, आप हमेशा अनुकूलन के लिए एक एनकोडर की सेटिंग्स को संदर्भित कर सकते हैं:
ffmpeg -h encoder {encoder-name}
तो, NVENC- आधारित एन्कोडर के लिए, आप चला सकते हैं:
ffmpeg -h encoder=hevc_nvenc
ffmpeg -h encoder=h264_nvenc
आप सभी NVENC- आधारित एन्कोडर और NPP- आधारित स्केलर (यदि ऐसा बनाया गया है) चलाकर भी देख सकते हैं:
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
slow
करने के लिएfast
अपने पहले आदेश में। सीआरएफ में लागू नहीं हैnvenc
।