VOD için önerilen ayarlar
Amaç
Bu bölümde, dosya tabanlı kodlama (yani canlı olmayan) gerçekleştirirken VP9 kodlama ayarlarıyla ilgili öneriler verilmektedir.
Bu öneriler aşağıdaki hedefler için tasarlanmıştır:
- Kalite ve kodlama hızı arasında denge
- Makul kaliteyi elde etmek için gereken minimum bit hızı
- Çok çeşitli içerik türlerine uygun ayarlar
Bu öneriler:
- Canlı kodlama sorunlarını giderme
- Belirli içerik türleri için optimizasyon (ör. çok hareketli spor görüntüleri)
- Belirli cihaz veya ağ gereksinimleri için ayarları yapılandırma
Tek çözünürlüklü kodlama
VP9, küçük çözünürlüklerden 4K'ya kadar çeşitli kare boyutlarını destekler. Daha büyük kare boyutları daha yüksek kalite sunar ancak daha fazla bant genişliği ve daha fazla işlem gücü gerektirir.
Tek bir çözünürlük oluşturuyorsanız çok çeşitli web ve mobil cihazlar için 640x480 güvenli bir seçenektir. Aşağıdaki FFmpeg komut satırı parametreleri, 750 kbps hızında tek çözünürlüklü bir dosya oluşturmanıza olanak tanır.
-vf scale=640x480 -b:v 750k -quality good -speed 0 -crf 33 \
-c:v libvpx-vp9 -c:a libopus output.webm
Çoklu çözünürlük kodlaması
Birden fazla çözünürlüğü hedeflemeyi planlıyorsanız veya yayın ağınızda farklı bant genişlikleri varsa birden fazla çözünürlük oluşturmanız önerilir. Oynatıcınız, izleyiciye hangi çözünürlüğün gönderileceğini kontrol edebilir.
Çok çözünürlüklü video kodlamaları genellikle uyarlanabilir bit hızı akışında kullanılır. Bu durumda video oynatıcı, kullanıcının bant genişliğine bağlı olarak çözünürlükler arasında gerçek zamanlı geçiş yapar. Örneğin, Shaka Player, her VP9 kodlamasının ayrı bir dosyada olduğu ve DASH manifestinin her kodlama hakkında bilgi sağladığı çok çözünürlüklü kodlamaları oynatmanıza olanak tanır.
Videoyu uyarlanabilir akış biçimlerinde paketleme hakkında daha fazla bilgi için lütfen Shaka Packager'ı inceleyin. Bu kılavuzda, birden fazla çözünürlükte VP9 için kodlama ayarlarına odaklanılacaktır.
Önerilen ayarlar
Aşağıdaki tüm ayarlar, çeşitli çözünürlüklerdeki tek tek dosyalar için kullanılabilir. Birleştirildiklerinde uyarlanabilir akış için uygun kapsamlı bir set oluştururlar. 640x480 sürümünün iki versiyonu olduğunu unutmayın: biri düşük kaliteli (LQ), diğeri ise orta kaliteli (MQ).
Bit hızı
İsteğe bağlı görüntüleme için VP9 dosyaları kodlanırken Sınırlı Kalite (CQ) modu önerilir. Bu kodlama modu, hedef ortalama bit hızını belirtmenize olanak tanırken hem videonun maksimum kalitesini hem de minimum ve maksimum bit hızını kontrol etmenizi sağlar.
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 sağlarken bit hızını en aza indirir. Bunları, makul bir kalite elde etmeye devam edebilen "düşük" bit hızı önerisi olarak düşünebilirsiniz.
Yukarıdaki örneklerde, minimum bit hızının hedef bit hızının %50'si, maksimum bit hızının ise hedef bit hızının% 145'i olarak ayarlanması önerilir.
Kare Boyutu/Kare Hızı | Hedef bit hızı (VOD, kb/sn) | Minimum bit hızı (%50) | Maksimum bit hızı (%145) |
---|---|---|---|
320x240p @ 24,25,30 | 150 | 75 | 218 |
640x360p @ 24,25,30 | 276 | 138 | 400 |
640x480p @ 24,25,30 | 512 (LQ), 750 (MQ) | 256 (LQ) 375 (MQ) | 742 (LQ) 1088 (MQ) |
1280x720p @ 24,25,30 | 1024 | 512 | 1485 |
1280x720p @ 50,60 | 1800 | 900 | 2610 |
1920x1080p @ 24,25,30 | 1800 | 900 | 2610 |
1920x1080p @ 50,60 | 3000 | 1.500 | 4350 |
2560x1440p @ 24,25,30 | 6.000 | 3000 | 8700 |
2560x1440p @ 50,60 | 9000 | 4500 | 13050 |
3840x2160p @ 24,25,30 | 12000 | 6.000 | 17400 |
3840x2160p @ 50,60 | 18000 | 9000 | 26100 |
Şekil 2a: Önerilen VOD bit hızları
FFmpeg'de bit hızı aşağıdaki komutlarla kontrol edilir:
FFmpeg | |
---|---|
-b:v <arg> |
Bit hızını ayarlar (ör. 500k) |
-minrate <arg> -maxrate <arg> |
Minimum ve maksimum bit hızını ayarlar. |
Örneğin, 640x480 çözünürlüğündeki içeriği kodlarken komut satırını -b:v 750k -minrate 375 -maxrate 1088
kullanabilirsiniz.
Kalite
CQ modunda maksimum kalite seviyesini de ayarlarsınız. Dosya tabanlı VP9 kodlama için aşağıdaki kalite seviyeleri önerilir:
Çerçeve Yüksekliği | Hedef Kalite (CQ) |
---|---|
240 | 37 |
360 | 36 |
480 | 34 (LQ) veya 33 (MQ) |
720 | 32 |
1080 | 31 |
1440 | 24 |
2160 | 15 |
FFmpeg'de kalite, -crf
komutuyla ayarlanır. Örneğin, kaliteyi 33 olarak ayarlamak için -crf 33
komutunu kullanırsınız.
Çok geçişli kodlama ve kodlama hızı
Dosyaya dayalı kodlama, hız konusunda esneklik sağlar. Ayrıca kaliteyi artırmak için aynı materyalde birden fazla geçiş yapabilir ve her biri için hız seçebilirsiniz.
FFmpeg'de VP9 dosyalarını kodlarken -quality
parametresinin good
olarak ayarlanması ve ardından aşağıdaki tabloda -speed
parametresiyle birlikte birinci ve ikinci geçişin hızının ayarlanması önerilir. Bu, kodlama süresi ve çıkış kalitesi arasında iyi bir denge sağlar.
Çerçeve Yüksekliği | Hız (İlk Geçiş) | Hız (İkinci Geçiş) |
---|---|---|
240 | 4 | 1 |
360 | 4 | 1 |
480 | 4 | 1 |
720 | 4 | 2 |
1080 | 4 | 2 |
1440 | 4 | 2 |
2160 | 4 | 2 |
Örneğin, FFmpeg'deki ilk geçiş kodlama dizesi -quality good -speed 4
içerebilir.
Animasyon Karesi Aralığı
Anahtar kareler arasında en fazla 240 kare video (30 FPS içerik için 8 saniye) kullanılması önerilir. Ana kareler, kendi kendine yeterli olan video kareleridir. Oluşturulmak için başka karelere ihtiyaç duymazlar ancak diğer kare türlerinden daha büyük olma eğilimindedirler. Web'de ve mobil cihazlarda oynatma için animasyon kareleri arasında geniş aralıklar bırakıldığında kodlayıcı, kaliteyi en üst düzeye çıkarmak için animasyon karelerinin en iyi yerleşimini seçebilir.
FFmpeg'de animasyon kareleri arasındaki boşluk, kare sayısını belirten -g
komutuyla kontrol edilir. 240 kare için bu değer -g 240
olur.
Döşeme ve İş Parçacığı Oluşturma Önerileri
Döşeme, video karesini birden fazla sütuna böler. Bu işlem kaliteyi biraz düşürse de kodlama performansını artırır. Döşemeler en az 256 piksel genişliğinde olmalıdır. Bu nedenle, kullanılabilecek döşeme sayısı sınırlıdır.
Döşeme sayısına ve çıkış çerçevesinin çözünürlüğüne bağlı olarak daha fazla CPU iş parçacığı yararlı olabilir. Genel olarak, çıkış çerçevesi boyutu çok küçük olduğunda birden fazla iş parçacığı kullanmanın değeri sınırlıdır.
Çeşitli çözünürlüklerde döşeme ve iş parçacığı oluşturma için aşağıdaki ayarlar önerilir.
Çerçeve Boyutu | Döşeme sütunu sayısı | İş parçacığı sayısı |
---|---|---|
320x240 | 1 (-tile-columns 0 ) |
1 |
640x360 | 2 (-tile-columns 1 ) |
2 |
640x480 | 2 (-tile-columns 1 ) |
2 |
1.280x720 | 4 (-tile-columns 2 ) |
4 |
1.920x1.080 | 4 (-tile-columns 2 ) |
4 |
2560x1440 | 8 (-tile-columns 3 ) |
8 |
3.840x2.160 | 8 (-tile-columns 3 ) |
8 |
FFmpeg'de döşeme sayısı -tile-columns
parametresiyle, iş parçacığı sayısı ise -threads
ile kontrol edilir. Örneğin, 640x480 kodlaması için -tile-columns 1 -threads 2
komut satırı kullanılır.
FFmpeg Komut Satırları
Yukarıdaki önerileri bir araya getirdiğimizde, VP9 içeriğini kodlamak için aşağıdaki FFmpeg komutları kullanılabilir.
İlk geçiş ve ikinci geçiş komutlarının birbirine bağlı olduğunu unutmayın. İkinci geçiş komutundaki -y
bağımsız değişkeni, FFmpeg ilk geçiş istatistikleri dosyasının çıkış videosuyla üzerine yazılmasını istediğinde "Evet" yanıtını verir.
Ayrıca, 1280x720 çıkış hedefleyen kodlamalar için 1080p kaynağın kullanıldığını unutmayın. Daha büyük çıkış için 4K kaynak kullanılır.
320x240 (saniyede 24, 25 veya 30 kare)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 1 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 1 -speed 4 tos-320x240.webm && \ ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 1 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 2 -speed 1 -y tos-320x240.webm
- Giriş dosyası: tears_of_steel_1080p.webm (1920x800, 544,88 MB)
- Çıkış dosyası: tos-320x240.webm (320x240, 21,73 MB)
640x360 (saniyede 24, 25 veya 30 kare)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 1 -y tos-640x360.webm
- Giriş dosyası: tears_of_steel_1080p.webm (1920x800, 544,88 MB)
- Çıkış dosyası: tos-640x360.webm (640x360, 31,53 MB)
640x480 (Düşük Kalite, saniyede 24, 25 veya 30 kare)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-low.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 1 -y tos-640x480-low.webm
- Giriş dosyası: tears_of_steel_1080p.webm (1920x800, 544,88 MB)
- Çıkış dosyası: tos-640x480-low.webm (640x480, 51,18 MB)
640x480 (Orta Kalite, saniyede 24, 25 veya 30 kare)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-medium.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 2 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 1 -y tos-640x480-medium.webm
- Giriş dosyası: tears_of_steel_1080p.webm (1920x800, 544,88 MB)
- Çıkış dosyası: tos-640x480-medium.webm (640x480, 69,27 MB)
1280x720 (saniyede 24, 25 veya 30 kare)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-24-30fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-1280x720-24-30fps.webm
- Giriş dosyası: tears_of_steel_1080p.webm (1920x800, 544,88 MB)
- Çıkış dosyası: tos-1280x720-24-30fps.webm (1280x720, 98,2 MB)
1280x720 (saniyede 50 veya 60 kare)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-50-60fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2-y tos-1280x720-50-60fps.webm
- Giriş dosyası: tears_of_steel_1080p.webm (1920x800, 544,88 MB)
- Çıkış dosyası: tos-1280x720-50-60fps.webm (1280x720, 157,1 MB)
1920x1080 (saniyede 24, 25 veya 30 kare)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 3 -g 240 -threads 4 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-1920x1080-24-30fps.webm
- Giriş dosyası: tearsofsteel_4k.mov (3840x1714, 6,76 GB)
- Çıkış dosyası: tos-1920x1080-24-30fps.webm (1920x1080, 151,51 MB)
1920x1080 (saniyede 50 veya 60 kare)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 2 -g 240 -threads 4 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 3 -g 240 -threads 4 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-1920x1080-50-60fps.webm
- Giriş dosyası: tearsofsteel_4k.mov (3840x1714, 6,76 GB)
- Çıkış dosyası: tos-1920x1080-50-60fps.webm (1920x1080, 238,18 MB)
2560x1440 (saniyede 24, 25 veya 30 kare)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-2560x1440-24-30fps.webm
- Giriş dosyası: tearsofsteel_4k.mov (3840x1714, 6,76 GB)
- Çıkış dosyası: tos-2560x1440-24-30fps.webm (2560x1440, 533,54 MB)
2560x1440 (saniyede 50 veya 60 kare)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-2560x1440-50-60fps.webm
- Giriş dosyası: tearsofsteel_4k.mov (3840x1714, 6,76 GB)
- Çıkış dosyası: tos-2560x1440-50-60fps.webm 2560x1440, 664,04 MB)
3840x2160 (saniyede 24, 25 veya 30 kare)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 2 -y tos-3840x2160-24-30fps.webm
- Giriş dosyası: tearsofsteel_4k.mov (3840x1714, 6,76 GB)
- Çıkış dosyası: tos-3840x2160-24-30fps.webm 3840x2160, 1,03 GB)
3840x2160 (saniyede 50 veya 60 kare)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 8 \
-quality good -speed 2 -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -y tos-3840x2160-50-60fps.webm
- Giriş dosyası: tearsofsteel_4k.mov (3840x1714, 6,76 GB)
- Çıkış dosyası: tos-3840x2160-50-60fps.webm 3840x2160, 1,56 GB)