CRF tabanlı kodlamalar için, aşağıdaki kod parçasında aşağıdaki bağımsız değişkenleri FFmpeg'e iletin:
-c:v h264_nvenc -rc:v vbr_hq -cq:v 19 -b:v 2500k -maxrate:v 5000k -profile:v high
Tabii ki, hedef bit hızlarını ve sabit bir cq
değeri ayarlamanız gerekir . 19, görsel olarak 0 ile aynı olduğu için önerilen ayardır, ancak dosya boyutuna göre iyi sıkıştırma ticaretini korur. Bkz bu yazma-up CRF ne yaptığına ilişkin daha fazla bilgi için.
Bu Not -cq
ölçeği 0 anlamına gelir, logaritmik kayıpsız esas olarak 51 mutlak kötü olur.
B-kareleri gibi seçenekler ekleyerek kalite daha da geliştirilebilir (bunu en fazla 3 ile sınırlayın ve bu H.264 Ana profili ve üstünü gerektirir. Taban çizgisi profilleri B-karelerini desteklemez. Bunu yapmak -bf {uint}
için, Video kodlayıcı, -bf:v 4
kodlayıcının 4 B-karesi kullanmasına neden olacak şekilde.
Burada önemli parçaları olan -cq:v 19
ve -rc:v vbr_hq
ayar sağlar argümanlar, önceden belirlenmiş bir değişken bit hızı ve izin verilen maksimum bit (her ikisi de kodlayıcı -b:v
ve -maxrate:v
19 CRF değerine bağlı kalarak).
Ve şimdi, NVENC hakkında küçük notlar ve yüksek kaliteli kodlamalar için ayarlama:
NVENC, diğer donanım tabanlı enkoderler gibi, bazı sınırlamalara sahiptir ve özellikle HEVC ile ilgili olarak, bilinen sınırlamalar şunlardır:
Pascal'da:
HEVC kodlamaları için aşağıdaki sınırlamalar geçerlidir:
- 32'nin üzerindeki CTU boyutları desteklenmez.
- HEVC'deki B-kareleri de desteklenmez.
- NVENC kodlayıcı tarafından desteklenen doku formatları, kodlayıcının çalışabileceği renk alanlarını sınırlar. Şimdilik 4: 2: 0 (8 bit) ve 4: 4: 4 (10 bit için) desteğimiz var. 4: 2: 2 10 bit gibi harici formatlar desteklenmez. Bu, bu tür renk uzaylarının gerekli olduğu bazı iş akışlarını etkiler.
- İleri bakma kontrolü de 32 kare ile sınırlıdır. Daha fazla ayrıntı için bu başyazıya bakmak isteyebilirsiniz .
Turing , HEVC için B-çerçeve desteğinin ve B-çerçeveleri referans olarak kullanma özelliğinin eklenmesiyle Pascal için mevcut tüm geliştirmelere sahiptir. Bu yetenekle ilgili bir örnek için bu cevaba bakınız .
Ve Maxwell Gen 2'de (GM200x serisi GPU'lar):
HEVC kodlaması aşağıdaki özelliklere sahip değildir:
Maxwell için buradaki etki, kısıtlı bit hızları altında HEVC ile birlikte hareket eden ağır sahnelerin, eksik ileri okuma fonksiyonları ve uyarlanabilir örnek ofseti (SAO) döngü filtreleme yetenekleri nedeniyle artefakttan (tıkanma) muzdarip olabileceğidir. Pascal bu yeteneği biraz geliştirdi, ancak video kodlayıcının oluşturulduğu SDK'nın sürümüne bağlı olarak, tüm özellikler mevcut olmayabilir.
Örneğin, Pascal'daki H.264 kodları için ağırlıklı tahmin modu NVENC SDK 8.0x ve üzerini gerektirir ve bu kodlama modu da B-kare desteğini devre dışı bırakır. Benzer şekilde, Nvidia Performance Primitives'tan (NPP) NVENC ile çalışan donanım tabanlı ölçekleyicilerin kombinasyonu, özellikle ölçeklendirilmiş içerikle ölçeklendirme yapaylaştırma maliyetiyle video ölçeklendirme uygulamalarında performans geliştirmeleri getirebilir. Aynı şey, video kodlama boru hattını da etkiler, çünkü NPP'nin ölçekleme işlevleri GPU'daki CUDA çekirdeklerinden dışarı akar ve bu nedenle, ekstra yükün getirdiği performans etkisi, performans kalitesinin olup olmadığını belirlemek için duruma göre analiz edilmelidir. değiş tokuş kabul edilebilir.
Bunu aklınızda bulundurun: Donanım tabanlı bir kodlayıcı, eşdeğer bir yazılım tabanlı uygulamaya göre her zaman biraz daha az özelleştirme sunar ve bu nedenle, kilometre ve kabul edilebilir çıktı kaliteniz her zaman farklılık gösterir.
Ve referans için:
FFmpeg ile özelleştirme için her zaman bir kodlayıcının ayarlarına başvurabilirsiniz:
ffmpeg -h encoder {encoder-name}
Böylece, NVENC tabanlı kodlayıcılar için şunları çalıştırabilirsiniz:
ffmpeg -h encoder=hevc_nvenc
ffmpeg -h encoder=h264_nvenc
Ayrıca çalıştırarak tüm NVENC tabanlı kodlayıcıları ve NPP tabanlı ölçekleyicileri (bu şekilde oluşturulmuşsa) görebilirsiniz:
for i in encoders decoders filters; do
echo $i:; ffmpeg -hide_banner -${i} | egrep -i "npp|cuvid|nvenc|cuda"
done
Test yatağımda örnek çıktı:
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
içinfast
ilk komuta. CRF uygulanmadınvenc
.