NVENC'li FFMpeg için en iyi ayarlar


26

Ben kullanıyorum FFMPEG benim GPU (bir desteğini ile NVENC h264 .mp4 dosyaları içine benim uydu alıcısından dönüştürme dosyaları (SD, MPEG2 .TS-Files) için)

İşte kullandığım çizgi

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

Ancak kalite beklendiği kadar iyi değil. Ve sistemimin tüm gücü kullanılmıyor:

resim açıklamasını buraya girin

Sadece% 11 GPU ve% 30 CPU kullanımı.

Soru: Kaliteyi eşit dosya boyutuna göre artırmak ve Geforce GTX 1080'imin daha fazla hesaplama gücünü kullanmak için yapabileceğim birkaç gelişme var mı?

Birkaç buldum parametreleri gelen 林正浩 değiştirmek için ama -preset slowzaten en kaliteli yaklaşımı hakkı olmalıdır?

Yanıtlar:


37

İşte kodlayıcıyı ayarlamak için kabaca bir kılavuz:

Temel seçeneklerden başlayacağız, çünkü hızlı bir seçenek barajının istenen hedefleri ve beklentileri anlamadan aniden beklenen çıktıyı iyileştireceği sonucuna atlamak zararlı olacaktır:

1. Kodlayıcının seçeneklerini anlayarak başlayın.

NVENC tabanlı kodlayıcılar için, her kodlayıcının aldığı seçenekleri öğrenmeye başlayın (Linux'ta olduğumu unutmayın, bu yüzden buraya yapıştırmadan önce codec seçeneklerini panoya kopyalamak için xclip kullanıyorum):

(A). H.264 kodlayıcı için:

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

Çıktı:

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.... 

(B). HEVC / H.265 kodlayıcı için:

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

Çıktı:

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. Donanımın sınırlamalarını öğrenin ve seçenekleri uygulamadan önce aklı başında olan varsayılanlara bağlı kalın:

NVENC ile karşılaşacağınız donanım sınırlamaları, özellikle Pascal'daki HEVC kodlamaları için bu cevaba bakınız .

FFmpeg ile mevcut nesil NVIDIA donanımı için mevcut olan donanım hızlandırmalı altyapı için bu cevaba bakınız .

Ardından, bu bilgileri kullanarak bir sonraki adıma geçin.

3. Sözdizimi kritiktir:

FFmpeg'e argüman iletmeniz gereken sıra:

(A). İkili dosyayı çağır.

(b). -loglevelGirdileri bildirmeden önce tüm bağımsız değişkenleri FFmpeg'e ( doğrudan buna benzer) iletin.

(c). Herhangi bir donanım hızlandırmalı kod çözme kullanıyorsanız, cuvidbunu burada bildirin ve gereken belirli bağımsız değişkenleri ekleyin. Bu noktada, kod çözücülerin beklenen girdi çözünürlükleri, desteklenen kodekler vb. Gibi belirli kısıtlamalara sahip olduklarından bahsetmek zorunludur ve bu nedenle, üretimde donanım hızlandırmalı kod çözücülerin arıza olarak ihtiyacını belirlemek ve doğrulamak önerilir. bu aşamada hata kodlaması başarısız olur ve kurtarılamaz. Aslında, MPV geliştiricileri bunu defalarca belirtmiştir , kritik görev içeriği dağıtımı için donanım hızlandırmalı kod çözmeye güvenmemektedir.

(D). Girdilerinizi beyan edin. Akışlar için URL'yi kullanın ve gerekirse fazladan bayrakları (arabellek boyutları gibi) gerektiği gibi ekleyin. Yerel kaynaklar için (erişilebilir bir dosya sisteminde) mutlak dosya yolu gereklidir.

(E). İsteğe bağlı olarak bir filtre takın. Yeniden boyutlandırma, piksel biçiminde konuşma, titreşim giderme vb. Gibi işlevler için bu gereklidir. Burada kullanılan filtreye bağlı olarak, donanım tabanlı bir kod çözücünün ((c) bölümünde açıklandığı gibi) filtrenizin olması gereken kısıtlamaları getireceğini unutmayın. yoksa kodlama başarısız olur.

(f). Uygun video ve ses kodlayıcı çağırın ve bit hızlarına gelince vb eşleştirmeleri, bit, kodlayıcı hazır ayarlar olarak onlara gerekli argümanları, pas, istediğiniz değerler üzerinden belirlenmesini sağlaması -b:v, -maxrate:vve -bufsize:vseçenekler. Bunları boş bırakmayın. Bu , bu değerlerin neden önemli olduğu konusunda iyi bir başlangıç ​​noktasıdır. Her zaman olduğu gibi, bir ön ayar belirterek başlayın. Bu özel kodlayıcı ile ön ayarların performans etkisi hakkındaki notları görmek için aşağı doğru kaydırın.

(G). FFmpeg, çıktı dosyasının seçilen uzantısına bağlı olarak bir dosyanın gerekli çıktı biçimini çıkarabilirken, gerekirse ekstra seçeneğin temel muxer'e geçirilebilmesi için çıktı biçiminin (-f seçeneği aracılığıyla) açıkça bildirilmesi önerilir. HLS, mpegts ve DASH gibi akış formatlarında olduğu gibi.

(H). Çıktı dosyasının mutlak yolu.

Yukarıdaki örneğinizle birlikte şu şekilde alıntılanmıştır:

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

Eğer uygun bit hızları belirleyerek çıkış kalitesini yükseltmek (aracılığıyla olabilir -b:v, -maxrate:vve -bufsize:vayarlar) (sadece bir seferde kullanılabilen uzamsal ve zamansal AQ yöntemleri desteklenir), uyarlamalı nicemleme kodlama tekniklerini sağlayan ve isteğe bağlı olarak (ayrı ayrı) aşağıda gösterildiği gibi ağırlıklı tahmin (B-çerçeve desteğini devre dışı bırakacak) ve uygun bir küçülme için isteğe bağlı bir filtre etkinleştirin ve gerekirse yeniden boyutlandırın. Aşağıdaki örnekte mpeg2 olarak kodlanmış bir pasaj işleme mpegts girişi gösterilmektedir:

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"

Uyarı: Ağırlıklı tahminin ( -weighted_pred) uyarlanabilir nicemleme ile aynı anda etkinleştirilemeyeceğini unutmayın. Bunu yapmaya çalışmak enkoder başlatma hatasına neden olacaktır.

Yukarıdaki snippet, giriş dosyasının bir MPEG2 akışı olduğunu varsayar. Durum böyle değilse, analiz ettikten sonra doğru CUVID kod çözücüye geçin:

ffprobe -i e:\input.ts

'H.264 / AVC ise, snippet'i aşağıda gösterildiği gibi değiştirin:

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"

Uyarlanabilir nicemlemenin VEYA ağırlıklı tahmin seçeneklerinin etkinleştirilmesinin NVENC için kararlılık, özellikle de belirli aygıt sürücüsü kombinasyonları ile ilgili sorunlar getirebileceğini fark ettim. Mümkün olduğunda, -refs:vAQ ve ağırlıklı tahmin üzerinde geçiş yapmak yerine B veya 16 (veya 3'ten fazla) jenerik seçenekle kombine edilmiş B-kareleri (en fazla 3) kullanmayı düşünün :

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"

Özellikle Turing ile , aşağıda gösterildiği gibi B-çerçevelerini referans olarak etkinleştirmekten de faydalanabilirsiniz (bkz. Geçiş -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"

İş parçacığı sayıları hakkında ek bir not ( -threadsseçenek aracılığıyla ffmpeg'e iletilir ):

Belirli bir eşiğin ötesinde daha fazla kodlayıcı iş parçacığı gecikmeyi artırır ve daha yüksek bir kodlama belleği alanına sahiptir. Artan kodlama gecikmesi nedeniyle sabit bit hızı modlarında ve VBV (video arabelleği doğrulayıcısı) adı verilen neredeyse sabit bit hızı modunda daha yüksek iplik sayımlarında kalite düşüşü daha belirgindir. Anahtar karelerin düşük kaliteli anahtar karelerin titreşmesini önlemek için diğer kare türlerinden daha fazla veriye ihtiyacı vardır.

Sıfır gecikme veya dilimlenmiş iplik modunun gecikmesi yoktur, ancak bu seçenek desteklenen kodlayıcılarda çoklu iplik kalitesini daha da kötüleştirir.

Bu nedenle, algılanan kodlayıcı verimi arttıkça uzun vadede getirebileceği avantajları dengelediğinden, gecikmenin önemli olduğu kodlardaki iplik sayısını sınırlamak akıllıca olacaktır.

Ve Windows'da olduğunuz için, \yukarıdaki komutu test eden bir Unix kutusundan yazdığım için yukarıdaki kabuk kaçışlarını kaldırmak isteyebilirsiniz .

Ön ayarlarla ve titreşimli aralıklı kodlama hususlarıyla performans etkisi hakkında notlar:

Yüksek verim, düşük gecikme performansı için, ya llhpda llhqön ayarları kullandığınızdan emin olun . Bu, çok çeşitli cihazlarla daha geniş uyumluluğun beklendiği canlı akış gibi iş yükleri için yararlıdır ve bu nedenle, B-çerçeveleri gibi performans sakatlama özellikleri, daha yüksek bit hızları arasında iyi bir denge sağlamak için tamamen atlanabilir kullanım ve verim. Yüksek önayarlar (varsayılan gibi medium), kalite çıktısında hızla azalan geri dönüşlere sahipken, aynı zamanda kodlayıcı veriminde önemli yavaşlamalara neden olur. Netflix'in VMAF'si ile ölçülen llhpve arasındaki kalite farkıllhq neredeyse ihmal edilebilir, ancak enkoderin eski ile olan performans artışı (test yatağımda ~% 30'un üzerinde) kesinlikle takdir edilebilir.

İçin llhpve llhqkullanımda hazır ayarlar, hem de diğer hazır ayarlar, ayrıca ileterek dahili hız kontrol yöntemlerini geçersiz kılabilirsiniz -rc:vkodlayıcı seçenekleri tarafından açığa olarak argümanlar. Örneğin, sabit bit hızı kodlaması ile belirtebilirsiniz -rc:v cbr(bu, cbr_ld_hqhız kontrol yönteminden önemli ölçüde daha hızlıdır ve verime ~% 20 artış sağlar). Seçilen ön ayarın verim üzerinde en büyük etkiye sahip olduğunu ve ardından isteğe bağlı olarak isteğe bağlı olarak geçersiz kılabileceğiniz ön ayar seçeneklerinin (kullanımdaki hız kontrol yöntemi gibi) geldiğini unutmayın.

Kodlama iş akışınızı düşünün ve gerektiği gibi ayarlayın. Kilometreniz, kaynak içeriğinize, kullanılan filtre zincirlerine, belirli pltform yapılandırma değişkenlerine (GPU'nuz ve sürücü sürümleriniz gibi) bağlı olarak kesinlikle değişecektir.

Aynı nefeste, NVIDIA'nın, eski Volta NVENC kodlayıcısını kullanan 1660Ti satırında bile , Turing üzerindeki tüm geçişli kodlamayı açıkça devre dışı bıraktığını unutmayın . Geçmeli kodlama desteğine ihtiyacınız varsa, lütfen bunun yerine Pascal veya daha eski SKU'lara geçin.


1
Epik! Teşekkürler, bu kadar uzun süre donanım kodlaması ile çalıştıktan sonra, CPU kodlaması üzerinde bunu rica eder misiniz veya kalite / dosya boyutunun dezavantajları hala bu kadar büyük mü? Ben varsayılan X264 ile karşılaştırıldığında eşit kalitede olmalıdır NVENC ve NVENC HQ yapılmıştır birçok gelişme var mı demek
Dr salyangoz

@ Dr.Snail Donanım tabanlı bir kodlama çözümüne geçmeden önce iş akışınızın gereksinimlerini değerlendirmenizi ve tüm faktörleri göz önünde bulundurmanızı öneririm. Birincisi, NVENC, diğer SIP tabanlı kodlama çözümleri gibi, yazılım tabanlı bir uygulamaya göre daha yüksek güç verimliliğinde her zaman çok daha hızlı performans sağlayacaktır, diğer tüm faktörler sabittir. Bunun için kalite değiş tokuşuna beklendiği gibi bir hız uygulayın, sonra desteklenmeyen özelliklere ağırlık verin. Örneğin, NVENC ile HDR bilgilerini doğrudan ekleyemeyiz ve bunun için harici bir araç kullanmamız gerekir.
林正浩


Seçiyorsunuz scale_npp=w=1920:h=1080çünkü filtreler GPU'dan en fazla fayda sağlayan şeylerden biri değil mi? Başka bir şey tarafından bit hızı sınırlandırır -b:v 1000k -minrate 500k -maxrate 3000kçıktı boyutu daha öngörülebilir hale görünüyor
Dr Salyangoz

Evet, @ Dr.Snail. Öngörülebilir dosya boyutları bir önceliktir.
林正浩

3

Nvenc kullanma deneyimim, ona hangi bit hızını istediğinizi söylemeniz gerektiğidir - varsayılan olarak VBR'dir, bu da iyidir, ancak hiçbir miktar ayarlama size her zaman 2M ortalama bit hızı vermek istediği gerçeğini telafi etmez hangi çözünürlük dosyasını besliyorsunuz. Kodlayıcıda bir kusur gibi görünüyor; tahmin edilebilir bir şekilde diğer her açıdan çalışır, ancak (örneğin) -b:v 4M720p dosya veya -b:v 8M1080p için gereklidir . İsterseniz bunları biraz düşürebilirsiniz.


1

Ses için Libvorbis yavaş görünüyor. ac3 size% 15 + hız artışı sağlamalıdır.

Video sürücünüzde bir şeylerin yanlış olduğu veya eski bir ffmpeg kopyası kullandığınız söyleniyor. q Klibiniz yok, ancak PVR'imden bir SD ts dosyası aldım ve ayarlarınızı kullandım.

Bir GTX750'de (TI olmayan) (daha ucuz olan) 700 fps (ayarlarınız) var

925fps aldım (ac3 ses ile ayarlarınız)

Yapabileceğim diğer öneri:

Qmax değerinizi 23 olarak değiştirin.


Ben bu komutla 400fps ile bulunan eski GTX 760 ile test ettik ffmpeg40\bin\ffmpeg -hwaccel cuvid -c:v mpeg2_cuvid -i "E:\input.ts" -c:v h264_nvenc "E:\output.mp4"AC3 ile kod eklemek memnun olabilir i.stack.imgur.com/CNaWM.png
Dr Salyangoz

Bu, komut satırınızda çalışmalıdır. -C: v h264_nvenc -c: a ac3'nizin yanına ekleyin. Ayrıca 2 oturumu da bastırabilirsiniz. 2. bir komut satırı açın ve aynı anda başka bir .ts kodlayın. İsterseniz hızınızı ve kalitenizi artırmak için yapılabilecek başka bir şey olup olmadığını görmek için .ts dosyalarınızdan birini test etmekten mutluluk duyarım.
Don Giovanni
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.