Bu bölümde, çeşitli yaygın profiller için VP9 kodlama önerileri listelenmektedir:

  • Web ve mobil için yüksek düzeyde optimize edilmiş video (VOD)
  • Premium içerik dağıtımı (VOD)
  • Spor, Animasyon, 10 bit içerik (VOD)
  • Canlı kodlama
  • WebRTC

Giriş

Video kodlarken dikkat edilmesi gereken birkaç nokta vardır:

  • Medyanızın tek bir sürümünü mü yoksa farklı bit hızlarında ve çözünürlüklerde birden fazla sürümünü mü oluşturuyorsunuz?
  • Canlı video akışı mı yoksa seç-izle video dosyaları mı oluşturuyorsunuz?
  • Kodladığınız medya türü nedir? Çok fazla hareket var mı? Ayrıntı? Animasyon mu?
  • Maksimum kalite (ör. premium içerik) veya hız (ör. web konferansı) için mi kodlama yapıyorsunuz?

Bu bölüm, temel bir isteğe bağlı video dosyasıyla ilgili ayarlar ile başlar ve ardından bu soruların tümü için önerilerde bulunur.

Temel Ayarlar

Kodlama bit hızları

Web ve mobil dağıtım için temel olarak aşağıdaki bit hızları önerilir. Bu öneriler, tüketici web ve mobil dağıtımı için uygun video kalitesini elde ederken bit hızını en aza indirir. Bunları, makul bir kalite elde etmeye devam edebilen "düşük" bit hızı önerisi olarak düşünebilirsiniz.

Önerilen hedef bit hızları

Kare Boyutu/Hızı Ortalama bit hızı (VOD, kb/sn) Ortalama bit hızı (canlı, kb/sn)
320x240p @ 24,25,30 150 250
640x360p @ 24,25,30 276 386
640x480p @ 24,25,30 512 (LQ), 750 (MQ) 720 (LQ), 1024 (MQ)
1280x720p @ 24,25,30 1024 1440
1280x720p @ 50,60 1800 2500
1920x1080p @ 24,25,30 1800 2500
1920x1080p @ 50,60 3000 4.200
2560x1440p @ 24,25,30 6.000 8400
2560x1440p @ 50,60 9000 12600
3840x2160p @ 24,25,30 12000 16800
3840x2160p @ 50,60 18000 25200

Şekil 2a: Hedef Bit Hızları

VOD Kodlama Ayarları

Çoğu İçerik Türü İçin Ayarlar

Çoğu içerik türü için bit hızı sınırlarıyla birlikte sınırlı kalite (CQ) modunu kullanmanızı öneririz. Çoğu videoda, çok hareketli sahneler (ör. aksiyon sekansları) ile daha az ayrıntı içeren sahneler (ör. sohbetler) bir arada bulunur. CQ modu, kodlayıcının daha uzun ve kolay sahnelerde makul bir kalite düzeyini korumasını (bitleri boşa harcamadan) sağlarken zorlu diziler için daha fazla bit ayırmasına olanak tanır.

Ayrıca, aşağıdaki grafikte belirtildiği gibi kalite değerlerini kullanarak bit hızı aralığının hedefin% 50'si ile% 150'si arasında olmasına izin vermenizi öneririz. Bu modda iki geçişli kodlama gerekir. Aşağıda belirtildiği gibi, HD ve üzeri için daha hızlı ayarlar kullanılması önerilir.

CQ kodlaması için kodlayıcı ayarları

Çerçeve Yüksekliği Hedef Kalite (CQ) Kodlama Modu
240 37 TWO_PASS_MEDIUM
360 36 TWO_PASS_MEDIUM
480 34 (düşük kalite) veya 33 (orta kalite) TWO_PASS_MEDIUM
720 32 TWO_PASS_FAST
1080 31 TWO_PASS_FAST
1440 24 TWO_PASS_FAST
2160 15 TWO_PASS_FAST

Şekil 2b: CQ için önerilen ayarlar

Son olarak, anahtar kareler arasında 240 kare video (30 FPS içerik için bu, 8 saniyeye karşılık gelir) öneririz. Anahtar kareler, kendi kendine yeterli olan video kareleridir. Oluşturulmak için başka karelere ihtiyaç duymazlar (daha ayrıntılı açıklama için GOP Yapısı'na bakın). Web ve mobil oynatma için, kodlayıcının kaliteyi en üst düzeye çıkarmak amacıyla anahtar karelerin "en iyi" yerleşimini seçmesine olanak tanıdığı için anahtar kareler arasında geniş aralık bırakılmasına izin verilir.

Örnek Komut Satırı Parametreleri: 640x360 Video

Yukarıdaki bilgilere göre 360p video için öneriler şunlardır:

  1. 36 CQ seviyesi (Şekil 2b'ye bakın)
  2. 276 kb/sn hedef bit hızı (Şekil 2a'ya bakın)
  3. İzin verilen minimum bit hızı 138 kb/sn (hedefin% 50'si)
  4. İzin verilen maksimum bit hızı 414 kb/sn (hedefin% 150'si)
  5. Maksimum 240 saniye animasyon karesi aralığı
  6. İki geçişli, "Orta" profil

Bu, libvpx ve FFmpeg için aşağıdaki komut satırı parametrelerini verir:

libvpx

--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
  --maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Premium İçerik Ayarları

Yukarıdaki örneklerde, video akışlarımızı verimli bir şekilde oluşturmak için oldukça hızlı kodlama ayarları kullandık. Ancak bazı içerikler (ör. premium filmler) için daha yüksek kaliteli bir çıktı elde etmek amacıyla kodlama sırasında daha fazla zaman harcamak faydalı olabilir.

Premium içerik için yukarıdakiyle aynı ayarları ancak farklı hazır ayarlar kullanarak öneririz. Bu ayarlar, kodlayıcıya kalite için daha fazla zaman harcaması talimatını verir:

Premium İçerik Kodlama Modları ve Komut Satırı Parametreleri

Çerçeve Yüksekliği Kodlama Modu libvpx FFmpeg
240 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
360 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
480 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
720 TWO_PASS_SLOW --good --cpu-used 1 -good -speed 1
1080 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
1440 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
2160 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2

Şekil 2c: Premium içerik kodlama modları

Spor, Yüksek Hareketli İçerik Ayarları

Spor içerikleri için VBR kodlamayı öneririz. Spor içeriklerinde hareket ve karmaşıklık düzeyi genellikle oldukça tutarlıdır. VBR kullanıldığında, hareketin daha az olduğu dönemlerde QP kodlamaya kıyasla daha yüksek kalite elde edilir.

Komut satırında, QP ve VBR modu arasındaki temel fark, bir CQ seviyesi belirtmemenizdir. Aksi takdirde, önerilen ayarlar aynıdır.

Örnek VBR komut satırı parametreleri: 640x360 video

libvpx

--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
  --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Animasyon ve Oyun Ayarları

Gürültülü / Düşük Kaliteli İçerik Ayarları

Gürültülü içeriklerde alt-ref karelerinin sayısını ve gücünü artırmanızı öneririz. Alternatif referans kareler, kullanıcıya hiçbir zaman gösterilmeyen ancak son kareler oluşturulurken referans olarak kullanılan "görünmez" karelerdir (daha fazla bilgiyi burada bulabilirsiniz).

VP9'a daha fazla alt-ref kare kullanması talimatını vermek için aşağıdaki parametreler önerilir:

libvpx

--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3

FFmpeg

10 bit/HDR kodlama

10 bit kodlama için VP9 Profile 2'yi kullanmanız gerekir. 10 bit'lik kodlama için daha fazla bit gerekmez. Bu nedenle, diğer parametreler aynıdır:

libvpx

--profile=2

FFmpeg

-profile 2

Canlı Kodlama Ayarları

Canlı Yayın

Canlı kodlama genellikle CBR olarak yapılır. Bu da kodlayıcının kaliteyi en üst düzeye çıkarma yeteneğini kısıtlar. Bu nedenle, Şekil 2a'da gösterildiği gibi daha yüksek bit hızları kullanacağız.

Canlı kodlamada da iş parçacığı oluşturmayı en üst düzeye çıkarmak istiyoruz. Bu işlem şu şekilde yapılır:

  1. VP9'un videoyu sütunlara bölmesine izin verilir (sütunlar en az 256 piksel genişliğinde olabilir ve 2'nin kuvveti olmalıdır).
  2. VP9'a daha fazla CPU gücü kullanmasını söyleme Aşağıdaki tabloda her çözünürlük için öneriler listelenmektedir.

Döşeme ve İş Parçacığı Oluşturma Önerileri

CQ kodlaması için kodlayıcı ayarları
Çerçeve Boyutu Döşeme sütunu sayısı İş parçacığı sayısı
320x240 1 2
640x360 2 4
640x480 2 4
1.280x720 4 8
1.920x1.080 4 8
2560x1440 8 16
3.840x2.160 8 16

Şekil 2d. Canlı kodlama için önerilen döşeme ve iş parçacığı oluşturma

Canlı kodlama, performansı sağlamak için son tarihi "gerçek zamanlı" olarak ayarlar ve alternatif referans karelerin geleceğe bakmamasını (bu da gecikmeye neden olur) ister:

Buna göre, 360p canlı video için öneriler şunlardır:

  1. CBR, 386 kb/sn hedef bit hızı (Şekil 2a'ya bakın)
  2. 2 kutu sütunu (Şekil 2d'ye bakın)
  3. 4 iş parçacığı (Şekil 2d'ye bakın)
  4. Gerçek zamanlı performans
  5. Alternatif kareler nedeniyle gecikme yok (kare gecikmesi yok)

Bu, libvpx ve FFmpeg için aşağıdaki komut satırı parametrelerini verir:

libvpx

--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0

FFmpeg

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
  -minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm

DASH/YouTube için canlı VP9 kodlama

WebRTC Kodlama