NVFC के साथ FFMpeg के लिए सर्वश्रेष्ठ सेटिंग्स


26

मैं अपने उपग्रही रिसीवर (SD, mpeg2 .TS-files) से फ़ाइलों को h264 .mp4-files में परिवर्तित करने के लिए अपने GPU ( NVENC ) के सुप्रीम के साथ अपने FFMPEG का उपयोग कर रहा हूं।

यहाँ लाइन का उपयोग कर रहा हूँ

ffmpeg -i "e:\input.ts" -vcodec h264_nvenc -preset slow -level 4.1
       -qmin 10 -qmax 52 "e:\output.mp4"

लेकिन गुणवत्ता अपेक्षा के अनुरूप अच्छी नहीं है। और मेरे सिस्टम की पूरी शक्ति का उपयोग नहीं किया जाता है:

यहां छवि विवरण दर्ज करें

केवल 11% GPU और 30% CPU उपयोग।

प्रश्न: क्या कुछ सुधार हैं जो मैं समान फ़ाइल आकार द्वारा गुणवत्ता में सुधार कर सकता हूं और अपने Geforce GTX 1080 की अधिक गणना शक्ति का उपयोग कर सकता हूं?

मैंने 林正浩 से कुछ मापदंडों को बदल दिया, लेकिन पहले से ही सबसे अच्छी गुणवत्ता दृष्टिकोण सही होना चाहिए?-preset slow

जवाबों:


37

यहां एनकोडर को ट्यूनिंग करने के लिए एक मोटा गाइड है:

हम मूल से शुरू करेंगे, क्योंकि यह निष्कर्ष में कूदना हानिकारक होगा कि विकल्पों का त्वरित बैराज अचानक वांछित उद्देश्यों और अपेक्षाओं को समझे बिना अपेक्षित उत्पादन में सुधार करेगा:

1. एनकोडर के विकल्पों को समझकर शुरू करें।

एनवीएनसी-आधारित एनकोडर के लिए, प्रत्येक एनकोडर के विकल्पों को सीखने के साथ शुरू करें (ध्यान दें कि मैं लिनक्स पर हूं, यही कारण है कि मैं कोडेक का उपयोग करके क्लिपबोर्ड पर कोडेक विकल्पों को कॉपी करने से पहले उन्हें यहां चिपका रहा हूं):

(ए)। H.264 एनकोडर के लिए:

ffmpeg -hide_banner -h encoder=h264_nvenc | xclip -sel clip

आउटपुट:

Encoder h264_nvenc [NVIDIA NVENC H.264 encoder]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: yuv420p nv12 p010le yuv444p yuv444p16le bgr0 rgb0 cuda
h264_nvenc AVOptions:
  -preset            <int>        E..V.... Set the encoding preset (from 0 to 11) (default medium)
     default                      E..V.... 
     slow                         E..V.... hq 2 passes
     medium                       E..V.... hq 1 pass
     fast                         E..V.... hp 1 pass
     hp                           E..V.... 
     hq                           E..V.... 
     bd                           E..V.... 
     ll                           E..V.... low latency
     llhq                         E..V.... low latency hq
     llhp                         E..V.... low latency hp
     lossless                     E..V.... 
     losslesshp                   E..V.... 
  -profile           <int>        E..V.... Set the encoding profile (from 0 to 3) (default main)
     baseline                     E..V.... 
     main                         E..V.... 
     high                         E..V.... 
     high444p                     E..V.... 
  -level             <int>        E..V.... Set the encoding level restriction (from 0 to 51) (default auto)
     auto                         E..V.... 
     1                            E..V.... 
     1.0                          E..V.... 
     1b                           E..V.... 
     1.0b                         E..V.... 
     1.1                          E..V.... 
     1.2                          E..V.... 
     1.3                          E..V.... 
     2                            E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     2.2                          E..V.... 
     3                            E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     3.2                          E..V.... 
     4                            E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     4.2                          E..V.... 
     5                            E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
  -rc                <int>        E..V.... Override the preset rate-control (from -1 to INT_MAX) (default -1)
     constqp                      E..V.... Constant QP mode
     vbr                          E..V.... Variable bitrate mode
     cbr                          E..V.... Constant bitrate mode
     vbr_minqp                    E..V.... Variable bitrate mode with MinQP (deprecated)
     ll_2pass_quality              E..V.... Multi-pass optimized for image quality (deprecated)
     ll_2pass_size                E..V.... Multi-pass optimized for constant frame size (deprecated)
     vbr_2pass                    E..V.... Multi-pass variable bitrate mode (deprecated)
     cbr_ld_hq                    E..V.... Constant bitrate low delay high quality mode
     cbr_hq                       E..V.... Constant bitrate high quality mode
     vbr_hq                       E..V.... Variable bitrate high quality mode
  -rc-lookahead      <int>        E..V.... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
  -surfaces          <int>        E..V.... Number of concurrent surfaces (from 0 to 64) (default 0)
  -cbr               <boolean>    E..V.... Use cbr encoding mode (default false)
  -2pass             <boolean>    E..V.... Use 2pass encoding mode (default auto)
  -gpu               <int>        E..V.... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)
     any                          E..V.... Pick the first device available
     list                         E..V.... List the available devices
  -delay             <int>        E..V.... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
  -no-scenecut       <boolean>    E..V.... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
  -forced-idr        <boolean>    E..V.... If forcing keyframes, force them as IDR frames. (default false)
  -b_adapt           <boolean>    E..V.... When lookahead is enabled, set this to 0 to disable adaptive B-frame decision (default true)
  -spatial-aq        <boolean>    E..V.... set to 1 to enable Spatial AQ (default false)
  -temporal-aq       <boolean>    E..V.... set to 1 to enable Temporal AQ (default false)
  -zerolatency       <boolean>    E..V.... Set 1 to indicate zero latency operation (no reordering delay) (default false)
  -nonref_p          <boolean>    E..V.... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
  -strict_gop        <boolean>    E..V.... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
  -aq-strength       <int>        E..V.... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)
  -cq                <float>      E..V.... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
  -aud               <boolean>    E..V.... Use access unit delimiters (default false)
  -bluray-compat     <boolean>    E..V.... Bluray compatibility workarounds (default false)
  -init_qpP          <int>        E..V.... Initial QP value for P frame (from -1 to 51) (default -1)
  -init_qpB          <int>        E..V.... Initial QP value for B frame (from -1 to 51) (default -1)
  -init_qpI          <int>        E..V.... Initial QP value for I frame (from -1 to 51) (default -1)
  -qp                <int>        E..V.... Constant quantization parameter rate control method (from -1 to 51) (default -1)
  -weighted_pred     <int>        E..V.... Set 1 to enable weighted prediction (from 0 to 1) (default 0)
  -coder             <int>        E..V.... Coder type (from -1 to 2) (default default)
     default                      E..V.... 
     auto                         E..V.... 
     cabac                        E..V.... 
     cavlc                        E..V.... 
     ac                           E..V.... 
     vlc                          E..V.... 

(ख)। HEVC / H.265 एनकोडर के लिए:

ffmpeg -hide_banner -h encoder=hevc_nvenc | xclip -sel clip

आउटपुट:

Encoder hevc_nvenc [NVIDIA NVENC hevc encoder]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: yuv420p nv12 p010le yuv444p yuv444p16le bgr0 rgb0 cuda
hevc_nvenc AVOptions:
  -preset            <int>        E..V.... Set the encoding preset (from 0 to 11) (default medium)
     default                      E..V.... 
     slow                         E..V.... hq 2 passes
     medium                       E..V.... hq 1 pass
     fast                         E..V.... hp 1 pass
     hp                           E..V.... 
     hq                           E..V.... 
     bd                           E..V.... 
     ll                           E..V.... low latency
     llhq                         E..V.... low latency hq
     llhp                         E..V.... low latency hp
     lossless                     E..V.... lossless
     losslesshp                   E..V.... lossless hp
  -profile           <int>        E..V.... Set the encoding profile (from 0 to 4) (default main)
     main                         E..V.... 
     main10                       E..V.... 
     rext                         E..V.... 
  -level             <int>        E..V.... Set the encoding level restriction (from 0 to 186) (default auto)
     auto                         E..V.... 
     1                            E..V.... 
     1.0                          E..V.... 
     2                            E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     3                            E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     4                            E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     5                            E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
     5.2                          E..V.... 
     6                            E..V.... 
     6.0                          E..V.... 
     6.1                          E..V.... 
     6.2                          E..V.... 
  -tier              <int>        E..V.... Set the encoding tier (from 0 to 1) (default main)
     main                         E..V.... 
     high                         E..V.... 
  -rc                <int>        E..V.... Override the preset rate-control (from -1 to INT_MAX) (default -1)
     constqp                      E..V.... Constant QP mode
     vbr                          E..V.... Variable bitrate mode
     cbr                          E..V.... Constant bitrate mode
     vbr_minqp                    E..V.... Variable bitrate mode with MinQP (deprecated)
     ll_2pass_quality              E..V.... Multi-pass optimized for image quality (deprecated)
     ll_2pass_size                E..V.... Multi-pass optimized for constant frame size (deprecated)
     vbr_2pass                    E..V.... Multi-pass variable bitrate mode (deprecated)
     cbr_ld_hq                    E..V.... Constant bitrate low delay high quality mode
     cbr_hq                       E..V.... Constant bitrate high quality mode
     vbr_hq                       E..V.... Variable bitrate high quality mode
  -rc-lookahead      <int>        E..V.... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
  -surfaces          <int>        E..V.... Number of concurrent surfaces (from 0 to 64) (default 0)
  -cbr               <boolean>    E..V.... Use cbr encoding mode (default false)
  -2pass             <boolean>    E..V.... Use 2pass encoding mode (default auto)
  -gpu               <int>        E..V.... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)
     any                          E..V.... Pick the first device available
     list                         E..V.... List the available devices
  -delay             <int>        E..V.... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
  -no-scenecut       <boolean>    E..V.... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
  -forced-idr        <boolean>    E..V.... If forcing keyframes, force them as IDR frames. (default false)
  -spatial_aq        <boolean>    E..V.... set to 1 to enable Spatial AQ (default false)
  -temporal_aq       <boolean>    E..V.... set to 1 to enable Temporal AQ (default false)
  -zerolatency       <boolean>    E..V.... Set 1 to indicate zero latency operation (no reordering delay) (default false)
  -nonref_p          <boolean>    E..V.... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
  -strict_gop        <boolean>    E..V.... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
  -aq-strength       <int>        E..V.... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)
  -cq                <float>      E..V.... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
  -aud               <boolean>    E..V.... Use access unit delimiters (default false)
  -bluray-compat     <boolean>    E..V.... Bluray compatibility workarounds (default false)
  -init_qpP          <int>        E..V.... Initial QP value for P frame (from -1 to 51) (default -1)
  -init_qpB          <int>        E..V.... Initial QP value for B frame (from -1 to 51) (default -1)
  -init_qpI          <int>        E..V.... Initial QP value for I frame (from -1 to 51) (default -1)
  -qp                <int>        E..V.... Constant quantization parameter rate control method (from -1 to 51) (default -1)
  -weighted_pred     <int>        E..V.... Set 1 to enable weighted prediction (from 0 to 1) (default 0)

2. हार्डवेयर की सीमाओं को समझें, और विकल्पों को लागू करने से पहले सबसे पहले डिफॉल्ट करने के लिए छड़ी करें:

हार्डवेयर सीमाओं के लिए इस उत्तर का संदर्भ लें , जिसे आप NVENC के साथ चलाएंगे, विशेष रूप से पास्कल पर HEVC एनकोड के लिए।

FFmpeg के साथ वर्तमान-पीढ़ी के NVIDIA हार्डवेयर के लिए उपलब्ध हार्डवेयर-त्वरित बुनियादी ढांचे के लिए, यह उत्तर देखें ।

फिर, उस जानकारी का उपयोग करते हुए, अगले चरण पर जाएं।

3. सिंटैक्स महत्वपूर्ण है:

यह वह क्रम है जिसमें आपको FFmpeg के लिए तर्क पारित करना होगा:

(ए)। बाइनरी को कॉल करें।

(ख)। FFmpeg के लिए कोई भी तर्क पास करें (जैसे कि-loglevelइनपुट्स घोषित करने से पहले सीधे यह) के ।

(सी)। यदि आप किसी हार्डवेयर-त्वरित डिकोडिंग का उपयोग कर रहे हैं, जैसे कि cuvid, इसे यहां घोषित करें और इसमें किसी भी विशिष्ट तर्क को शामिल करें। इस बिंदु पर, यह उल्लेख करना अनिवार्य होगा कि डिकोडर्स के पास विशिष्ट अवरोध हैं, जैसे अपेक्षित इनपुट रिज़ॉल्यूशन, समर्थित कोडेक्स, आदि, और इस तरह, यह अनुशंसा की जाती है कि उत्पादन में विफलता के रूप में हार्डवेयर-त्वरित डिक्रेटर की आवश्यकता को निर्धारित करने और मान्य करने के लिए। इस स्तर पर परिणाम एक असफल सांकेतिक शब्दों में बदलना और अप्राप्य है। वास्तव में, एमपीवी देवों ने बार-बार इसका उल्लेख किया है , मिशन-महत्वपूर्ण सामग्री वितरण के लिए हार्डवेयर-त्वरित डिकोडिंग पर भरोसा नहीं करते हैं।

(घ)। अपने इनपुटों की घोषणा करें। धाराओं के लिए, URL का उपयोग करें और यदि आवश्यक हो, तो अतिरिक्त झंडे (जैसे बफर आकार) को आवश्यक रूप से पूर्व-निर्धारित करें। स्थानीय संसाधनों के लिए (एक सुलभ फाइल सिस्टम पर), निरपेक्ष फ़ाइल पथ की आवश्यकता है।

(इ)। वैकल्पिक रूप से, एक फिल्टर डालें। यह आकार बदलने, पिक्सेल प्रारूप बातचीत, डी-इंटरलेसिंग, आदि जैसे कार्यों के लिए आवश्यक है। ध्यान दें कि यहां उपयोग में फ़िल्टर के आधार पर, एक हार्डवेयर-आधारित डिकोडर (जैसा कि अनुभाग में वर्णित है) (सी) बाधाओं का परिचय देगा कि आपका फ़िल्टर होना चाहिए संभाल करने में सक्षम, अन्यथा आपका एनकोड फेल हो जाएगा।

(च)। उचित वीडियो और ऑडियो एनकोडर फोन, और इस तरह मैपिंग, बिटरेट, एनकोडर प्रीसेट, आदि के रूप में उन्हें करने के लिए आवश्यक तर्क, पारित यह बिटरेट की बात आती है, यह सुनिश्चित करें कि अपने वांछित मूल्यों के माध्यम से स्थापित कर रहे हैं -b:v, -maxrate:vऔर -bufsize:vविकल्प। इन खाली मत छोड़ो। इस एक अच्छा प्रारंभिक बिंदु है कि ये मूल्य क्यों मायने रखते हैं। हमेशा की तरह, एक पूर्व निर्धारित निर्दिष्ट करके शुरू करें। इस विशेष एनकोडर के साथ प्रीसेट के प्रदर्शन प्रभाव पर नोट्स देखने के लिए नीचे की ओर स्क्रॉल करें।

(छ)। जबकि FFmpeg आउटपुट फ़ाइल के चयनित एक्सटेंशन के आधार पर किसी फ़ाइल के आवश्यक आउटपुट स्वरूप को घटा सकता है, यह आउटपुट प्रारूप (-f विकल्प के माध्यम से) को स्पष्ट रूप से घोषित करने की सिफारिश की जाती है ताकि जरूरत पड़ने पर अंतर्निहित mux में अतिरिक्त विकल्प पारित किए जा सकें। , जैसा कि अक्सर स्ट्रीमिंग प्रारूप जैसे HLS, mpegts और DASH के साथ होता है।

(ज)। आउटपुट फ़ाइल का पूर्ण पथ।

आपके उदाहरण के साथ, निम्न के रूप में उद्धृत:

ffmpeg -i "e:\input.ts" -vcodec h264_nvenc -preset slow -level 4.1
       -qmin 10 -qmax 52 "e:\output.mp4"

आप उचित बिटरेट (के माध्यम से -b:v, -maxrate:vऔर -bufsize:vसेटिंग्स) निर्दिष्ट करके उत्पादन की गुणवत्ता बढ़ा सकते हैं , अनुकूली परिमाणीकरण एन्कोडिंग तकनीकों को सक्षम कर सकते हैं (स्थानिक और लौकिक AQ विधियों का समर्थन किया जाता है, जिनमें से केवल एक समय में उपयोग किया जा सकता है) और वैकल्पिक रूप से (और अलग से) भारित भविष्यवाणी को सक्षम करना (जो बी-फ्रेम समर्थन को अक्षम करेगा) जैसा कि नीचे दिखाया गया है, साथ ही एक उचित डाउनस्केल के लिए एक वैकल्पिक फिल्टर और यदि आवश्यक हो तो आकार बदलें। नीचे दिए गए उदाहरण से पता चलता है कि mpeg2 में एन्कोडेड एक स्निपेट हैंडलिंग mpegts इनपुट:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v mpeg2_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 \
-spatial_aq:v 1 -aq-strength:v 15 -coder:v cabac \
-f mp4 "e:\output.mp4"

चेतावनी: ध्यान दें कि भारित भविष्यवाणी ( -weighted_pred) को एक ही समय में अनुकूली परिमाणीकरण के रूप में सक्षम नहीं किया जा सकता है। ऐसा करने का प्रयास एनकोडर आरंभीकरण विफलता के परिणामस्वरूप होगा।

ऊपर स्निपेट मानता है कि इनपुट फ़ाइल एक MPEG2 स्ट्रीम है। यदि ऐसा नहीं है, तो विश्लेषण करने के बाद सही CUVID डिकोडर पर जाएँ:

ffprobe -i e:\input.ts

यदि इसका 'H.264 / AVC', स्निपेट को नीचे दिखाए अनुसार संशोधित करें:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -spatial_aq:v 1 \
-aq-strength:v 15 -coder:v cabac \
-f mp4 "e:\output.mp4"

मैंने देखा है कि NVENC के लिए अनुकूली परिमाणीकरण या भारित भविष्यवाणी विकल्पों को सक्षम करना स्थिरता के साथ मुद्दों को पेश कर सकता है, विशेष रूप से विशिष्ट डिवाइस ड्राइवर संयोजनों के साथ। जहां संभव हो, -refs:vAQ और वेटेड भविष्यवाणी पर टॉगल करने के बजाय, बी-फ्रेम (3 से अधिक नहीं) के उपयोग को 16 या उसके स्थान पर सेट किए गए सामान्य विकल्प के साथ जोड़कर देखें:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -refs:v 16 \
-bf:v 3 -coder:v cabac \
-f mp4 "e:\output.mp4"

ट्यूरिंग के साथ , विशेष रूप से, आपको संदर्भ के लिए बी-फ्रेम को सक्षम करने से भी लाभ हो सकता है जैसा कि नीचे दिखाया गया है (टॉगल देखें -b_ref_mode:v middle):

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -refs:v 16 \
-bf:v 3 -coder:v cabac -b_ref_mode:v middle \
-f mp4 "e:\output.mp4"

थ्रेड काउंट्स पर एक अतिरिक्त नोट ( -threadsविकल्प के माध्यम से ffmpeg को पास किया गया ):

एक निश्चित सीमा से अधिक एनकोडर थ्रेड्स विलंबता को बढ़ाते हैं और एक उच्च एन्कोडिंग मेमोरी फुटप्रिंट होगा। गुणवत्ता में गिरावट अधिक बिट मोड के साथ उच्च थ्रेड काउंट्स के साथ अधिक प्रमुख है और VBV (वीडियो बफर वेरिफ़ायर) नामक निकट-निरंतर बिटरेट मोड में वृद्धि हुई एनकोड देरी के कारण होती है। कीफ़्रेम को अधिक डेटा की आवश्यकता होती है, तो खराब गुणवत्ता वाले कीफ़्रेम को स्पंदित करने से बचने के लिए अन्य फ़्रेम प्रकार।

शून्य-विलंब या थ्रेडेड थ्रेड मोड में कोई देरी नहीं है, लेकिन यह विकल्प आगे के एन्कोडर में मल्टी-थ्रेड्स गुणवत्ता को खराब करता है।

इसलिए यह समझदारी है कि जहां एनकोडर थ्रूपुट लंबे समय में ला सकता है, किसी भी फायदे को बढ़ाता है, क्योंकि एनकोड पर थ्रेड काउंट को सीमित करना बुद्धिमानी है।

और जब से आप विंडोज पर हैं, तो आप \ऊपर दिए गए शेल को हटाना चाह सकते हैं क्योंकि मैं इसे यूनिक्स बॉक्स से ऊपर कमांड का परीक्षण कर रहा हूं।

प्रीसेट और इंटरलेस्ड एन्कोडिंग विचारों के साथ प्रदर्शन प्रभाव पर नोट्स:

उच्च थ्रूपुट, कम विलंबता प्रदर्शन के लिए, सुनिश्चित करें कि आप llhpया तो llhqप्रीसेट का उपयोग कर रहे हैं । यह लाइव लोडिंग जैसे वर्कलोड के लिए सबसे उपयोगी है जहां व्यापक उपकरणों के साथ व्यापक संगतता की उम्मीद की जाती है, और इस तरह, बी-फ्रेम जैसे प्रदर्शन अपंग सुविधाओं को उच्च बिट दर के बीच एक अच्छे ट्रेड-ऑफ के लिए पूरी तरह से छोड़ा जा सकता है। उपयोग और थ्रूपुट। उच्चतर प्रीसेट्स (जैसे कि डिफ़ॉल्ट medium) गुणवत्ता आउटपुट में तेजी से कम होते हैं जबकि एक ही समय में एनकोडर थ्रूपुट में महत्वपूर्ण मंदी आती हैनेटफ्लिक्स के VMAF द्वारा llhpऔर के बीच की गुणवत्ता का अंतरllhq वस्तुतः नगण्य है, फिर भी पूर्व के साथ एन्कोडर के प्रदर्शन को बढ़ावा देना (मेरे परीक्षण बिस्तर पर 30% से अधिक) निश्चित रूप से प्रशंसनीय है।

के लिए llhpऔर llhqप्रीसेट, साथ ही उपयोग में अन्य प्रीसेट, आप भी पारित करके में निर्मित दर-नियंत्रण विधियों ओवरराइड कर सकते हैं -rc:vके रूप में एक एनकोडर विकल्प द्वारा उजागर तर्क। उदाहरण के लिए, निरंतर बिट-दर एन्कोडिंग के साथ, आप निर्दिष्ट कर सकते हैं -rc:v cbr(जो कि cbr_ld_hqदर नियंत्रण विधि की तुलना में काफी तेज है , अतिरिक्त ~ 20% थ्रूपुट को बढ़ावा देता है)। ध्यान दें कि चयनित प्रीसेट का थ्रूपुट पर सबसे अधिक प्रभाव पड़ता है , इसके बाद प्रीसेट विकल्प (जैसे उपयोग में दर नियंत्रण विधि) जिसे आप चाहें तो वैकल्पिक रूप से ओवरराइड कर सकते हैं।

अपने एन्कोडिंग वर्कफ़्लो पर विचार करें और आवश्यकतानुसार समायोजित करें। आपकी स्रोत सामग्री, उपयोग में फ़िल्टर श्रृंखला, विशिष्ट pltform कॉन्फ़िगरेशन चर (जैसे कि आपका GPU और ड्राइवर संस्करण), आदि के आधार पर आपका माइलेज निश्चित रूप से भिन्न होगा।

एक ही सांस में, ध्यान दें कि NVIDIA ने स्पष्ट रूप से सभी टियर पर ट्यूरिंग पर इंटरकोडिंग एन्कोडिंग को निष्क्रिय कर दिया है , यहां तक ​​कि 1660 टीआई लाइन में जो पुराने वोल्टा एनवीएनसी एनकोडर का उपयोग करता है। यदि आपको इंटरलेस्ड एन्कोडिंग समर्थन की आवश्यकता है, तो कृपया इसके बजाय पास्कल या पुराने SKU पर स्विच करें।


1
महाकाव्य! धन्यवाद, इतने लंबे समय के लिए हार्डवेयर एन्कोडिंग के साथ काम करने के बाद, क्या आप इसे सीपीयू एन्कोडिंग पर पुनः प्राप्त करेंगे या गुणवत्ता के नुकसान / फ़ाइलें अभी भी हैं? मेरा मतलब है कि कई सुधार हैं जो NVENC और NVENC मुख्यालय में किए गए हैं डिफ़ॉल्ट x264 की तुलना में समान गुणवत्ता होनी चाहिए
डॉ। घोंघा

@ Dr.Snail मैं आपके वर्कफ़्लो की आवश्यकताओं को पहले पहचानने की सलाह दूंगा और हार्डवेयर-आधारित एन्कोडिंग समाधान पर स्विच करने से पहले सभी कारकों को ध्यान में रखूंगा। एक के लिए, NVENC, अन्य एसआईपी-आधारित एन्कोडिंग समाधानों की तरह, सॉफ्टवेयर आधारित कार्यान्वयन के सापेक्ष उच्च शक्ति दक्षता पर हमेशा तेज प्रदर्शन करेगा, अन्य सभी कारक स्थिर। इसके लिए, अपेक्षित रूप से गुणवत्ता वाले व्यापार बंद करने की गति लागू करें, फिर असमर्थित सुविधाओं का वजन करें। उदाहरण के लिए, NVENC के साथ, हम सीधे HDR जानकारी नहीं डाल सकते हैं और उसके लिए एक बाहरी उपकरण का उपयोग करना होगा।

इस तरह के उपकरण: github.com/SK-Hardwired/nv_hevc_hdr_patcher

आप चुनते हैं scale_npp=w=1920:h=1080क्योंकि फ़िल्टर एक ऐसी चीज़ है जो GPU के अधिकार से सबसे अधिक लाभान्वित होती है? एक और बात, बिटरेट को सीमित -b:v 1000k -minrate 500k -maxrate 3000kकरने से उत्पादन का आकार और अधिक अनुमानित हो जाता है
डॉ। घोंघा

हाँ, @ Dr.Snail। पूर्वनिर्धारित फ़ाइल आकार एक प्राथमिकता है।
林正浩

3

एनवीकेएन का उपयोग करने के साथ मेरा अनुभव यह है कि आपको यह बताने की आवश्यकता है कि आप क्या चाहते हैं - यह वीबीआर को डिफॉल्ट करता है, जो ठीक है, लेकिन ट्यूनिंग की कोई भी मात्रा इस तथ्य के लिए नहीं है कि यह आपको हमेशा 2 एम औसत बिटरेट देना चाहता है क्या संकल्प फ़ाइल आप इसे खिलाओ। यह एनकोडर में एक दोष की तरह लगता है; यह हर दूसरे सम्मान में अनुमानित रूप से प्रदर्शन करता है, लेकिन इसे -b:v 4M720p फ़ाइल या -b:v 8M1080p के लिए (उदाहरण के लिए) की आवश्यकता होती है । आप शायद उन को थोड़ा कम कर सकते हैं यदि आप चाहते हैं, तो भी।


1

ऑडियो के लिए Libvorbis धीमा लगता है। ac3 आपको स्पीड में 15% + बूस्ट देना चाहिए।

कहा जा रहा है कि आपके वीडियो ड्राइवर के साथ कुछ गलत है या आप ffmpeg की पुरानी कॉपी का उपयोग कर रहे हैं। q मेरे पास आपकी क्लिप नहीं है, लेकिन मैंने अपने PVR से SD ts फ़ाइल को पकड़ा, और आपकी सेटिंग्स का उपयोग किया।

मुझे GTX750 (गैर TI) (सस्ता वाला) पर 700fps (आपकी सेटिंग्स) मिली

मुझे 925fps मिली (ac3 ऑडियो के साथ आपकी सेटिंग्स)

अन्य सिफारिश मैं कर सकता हूँ:

अपने qmax को लगभग 23 में बदलें।


मैंने इसे एक पुराने GTX 760 के साथ परीक्षण किया है जो मुझे इस कमांड के साथ 400FPS के साथ मिला है ffmpeg40\bin\ffmpeg -hwaccel cuvid -c:v mpeg2_cuvid -i "E:\input.ts" -c:v h264_nvenc "E:\output.mp4"आप कृपया AC3 i.stack.imgur.com/CNaWM.png
डॉ। घोंघा

यह आपकी कमांड लाइन में काम करना चाहिए। इसे अपने -c: v h264_nvenc -c: ac3 के बगल में जोड़ें। आपको 2 सत्रों को आगे बढ़ाने में भी सक्षम होना चाहिए। एक दूसरी कमांड लाइन खोलें और उसी समय एक और .ts को एनकोड करें। यदि आप मुझे पसंद करते हैं, तो आप अपनी .ts फाइलों में से एक का परीक्षण करके खुश हो सकते हैं कि क्या ऐसा कुछ और है जो आपकी गति और गुणवत्ता को पंप करने के लिए किया जा सकता है।
डॉन जियोवानी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.