VP9 HDR Kodlama
Yüksek Dinamik Aralıklı (HDR) videolar olgunluğa ulaşmış bir teknolojidir. Günümüzde aşamalı olarak uyumlulaştırma standartları vardır.
HDR video evriminin bakımlı bir resmi için Yüksek dinamik aralıklı video WikiPedia makalesine bakın.
FFmpeg, (1) HDR kaynaklarını Standart Dinamik Aralık (SDR) çıkışlarına sıkıştırmak veya (2) HDR kaynağını HDR web dostu biçimlerde yeniden paketlemek için her iki yöntemle de VP9 ile birlikte kullanılabilir.
Giriş kaynakları
Şu anda VP9 ile HDR kodlaması yapılırken, FFmpeg tarafından desteklenen tüm yüksek derinlik (10 bit) codec'leri giriş olarak kullanılabilir (örneğin, VP9 Profil 2 ve 3, H.264 (10 bit), DNxHR, HEVC, ProRes vb.). Ayrıca, Yüksek Dinamik Aralıklı (HDR) videolar yükleme başlıklı YouTube destek makalesine göz atın.
Kodlanmış çıkış erişimi:
Şu anda genel olarak, desteklenen hedef cihazlar VP9 Profil 2'nin kodunu çözebilen ve HDR ekrana çıkabilen tüm cihazları içerir.
- Chromecast Ultra + HDR özellikli TV
- Windows 10 Sonbahar İçerik Üreticileri Güncellemesi'nde, HDR işareti açık olan Chrome 64 Canary. (Bu, iyi bir hata ayıklama aracıdır).
- VP9 Profil 2 ile tüm HDR TV'ler
- Tüm Samsung 2017 HDR modelleri (flatpanelshd.com listesi) ve 2016 modelleri ""KS
- Tüm LG 2017 HDR modelleri (ayrıca bazı 2016 LG G6 modelleri)
- Mobil cihazlarda, donanım hızlandırılmış VP9 Profil 2 10 bit HDR kod çözmeyi destekleyen cihazlar (Meizu Pro 7)
- 2017 tarihli UHD Bluray
VP9 Profil 2 ve HDR EOTF'leri etkinleştirmek için FFmpeg komut satırı ayarları
FFmpeg'nizin 10 bit (hatta 12 bit) destek ile oluşturulmuş olması gerekir.
Aşağıdaki örneklerde, 10 bit destekle statik olarak oluşturulmuş bir ffmpeg
kullanılmıştır.
Kendi komut dosyanızı oluşturmak için oluşturma komut dosyamızı kullanabilir veya FFmpeg sitesindeki kılavuzu uygulayabilirsiniz.
Aşağıda, VP9 ile SMPTE 2084 (PQ EOTF) standartlarında HDR kodlaması için kullanılabilir bir FFmpeg komut satırı verilmiştir:
ffmpeg -i strobe_scientist_18Mbps.webm -b:v 18000000 -pass 1 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \
-maxrate 26800000 -minrate 8040000 -profile:v 2 -vcodec libvpx-vp9 /dev/null && \
ffmpeg -i strobe_scientist_18Mbps.webm -b:v 18000000 -pass 2 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \
-maxrate 26800000 -minrate 8040000 -profile:v 2 -vcodec libvpx-vp9 \
strobe_scientist_18Mbps.webm
Burada sunulan temel parametrelerin dökümü:
ffmpeg | 10 bit destekli statik yapı |
---|---|
-pass 1 |
HDR için 2 geçişli kodlama gerekir. Bu örnekte ilk geçiş, /dev/null çıkışına aktarılır ve ikinci geçiş sırasında bellekte işlenir. |
-pix_fmt yuv420p10le |
YUV 4:2:0 10 bit piksel biçimini ayarlar |
-color_primaries 9 |
BT2020 ayarlar. Daha ayrıntılı bilgi için bu dokümanın 5. ve 6. sayfasına bakın. |
-color_trc 16 |
16 , Aktarım Özelliklerini SMPTE 2084 olarak ayarlar. PQ 18 , Aktarım Özellikleri SMPTE 2086 HLG'yi ayarlar |
-colorspace 9 |
colorspace , matris_ katsayılarıdır. Bu, içeriğin ana kopyalanma şekliyle tutarlı olarak ayarlanmalıdır. (ör. bt709, bt2020_ncl). Bu örnekte, bt2020_ncl için 9 olmalıdır. Daha fazla bilgi için bu dokümanın 12. sayfasına bakın. |
-color_range 1 |
Renk aralığı (0 = belirtilmemiş, 1 = mpeg/studio/tv, 2 = jpeg/full/pc) |
-profile:v 2 |
HDR için 2 veya 3 profili gerekir. |
-vcodec libvpx-vp9 |
VP9 kodlayıcıyı kullanın. |
Örnek kodlamalar
Aşağıdaki örneklerin tümü strobe_scientist.mkv kaynak dosyasını kullanır
HDR kodlamasına sahip bit hızları hakkında genel bir not olarak, 8 bit eş değer SDR kodlamaya göre% 25-30 daha yüksek bit hızı önerilir. Örnekler genellikle 18 Mb/sn'yi hedefler. En iyi HDR sonuçları, optimum ayara sahip 12 Mb/sn bit hızlarıyla elde edilebilir.
Kodlamalar, aşağıdaki spesifikasyonlarla Ubuntu Linux sisteminde gerçekleştirildi:
- İşlemci: 4,20 GHz'te 4x Intel(R) Core(TM) i5-6500 CPU
- Bellek (RAM): 8.060 MB (1.492 MB kullanılır)
- Grafik: Intel HD Graphics 530 (Skylake GT2)
- İşletim sistemi: Ubuntu 16.04 LTS
YUV'ye 4:2:0 10 bit PQ'ya dönüştür
Örnek A: 6 Mb/sn 4k 2 geçiş
ffmpeg -y -report -i strobe_scientist.mkv -b:v 6000000 -speed 4 -pass 1 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \
-maxrate 8000000 -minrate 4000000 \
-profile:v 2 -vcodec libvpx-vp9 -f webm /dev/null && \
ffmpeg -y -report -i strobe_scientist.mkv -b:v 6000000 -pass 2 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \
-maxrate 8000000 -minrate 4000000 \
-profile:v 2 -vcodec libvpx-vp9 \
2pass_HDR_strobe_scientist_6Mbps-static.webm
- Çıkış dosyası: 2pass_HDR_strobe_scientist_6Mbps-static.webm
- Kodlama süresi: 142 m30 sn
- Diskteki dosya boyutu: 51,2 MB
Örnek B1: 18 Mb/sn 4k 2 geçiş
ffmpeg -y -report -i strobe_scientist.mkv -b:v **18000000** -speed 4 -pass 1 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \
-maxrate **20800000** -minrate **15040000** \
-profile:v 2 -vcodec libvpx-vp9 -f webm /dev/null && \
ffmpeg -y -report -i strobe_scientist.mkv -b:v 18000000 -pass 2 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \
-maxrate **20800000** -minrate **15040000** \
-profile:v 2 -vcodec libvpx-vp9 \
2pass_HDR_strobe_scientist_18Mbps-static.webm
- Çıkış dosyası: 2pass_HDR_strobe_scientist_18Mbps-static.webm
- Kodlama süresi: 213 m32'ler
- Diskteki dosya boyutu: 161 MB
Örnek B2: 18 Mb/sn 1080p 2 geçiş
ffmpeg -y -report -i strobe_scientist.mkv -b:v 18000000 -speed 4 -pass 1 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \
-maxrate 20800000 -minrate 15040000 \
-profile:v 2 **-vf ****scale=-1:1080**** **-vcodec libvpx-vp9 \
-f webm /dev/null && \
ffmpeg -y -report -i strobe_scientist.mkv -b:v 18000000 -pass 2 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 16 -colorspace 9 -color_range 1 \
-maxrate 20800000 -minrate 15040000 \
-profile:v 2 **-vf ****scale=-1:1080**** **-vcodec libvpx-vp9 \
1080_2pass_HDR_strobe_scientist_18Mbps-static.webm
- Çıkış dosyası: 1080_2pass_HDR_strobe_scientist_18Mbps-static.webm
- Kodlama süresi: 113 m9'lar
- Diskteki dosya boyutu: 160 MB
Arama tablosu (LUT) ile HDR'yi SDR'ye dönüştürme
HDR'ye SDR'ye dönüştürme işlemi için kod dönüştürücünün parlaklık seviyelerini ve renklerini daha küçük BT.709 renk alanı ve HDR olmayan parlaklık aralığıyla nasıl eşleştireceğini anlaması gerekir. En iyi sonuçları elde etmek için bu eşlemenin nasıl gerçekleştirileceğini (genellikle içeriğe özgü) açıklayan bir LUT kullanılabilir. C ve D örnekleri, LUT'nin nasıl kullanılacağını gösteriyor. bt2020_to_bt709_example.cube kullandık
Örnek C: LUT ile 18 Mb/sn 4k HDR - SDR
ffmpeg -i strobe_scientist.mkv -y -b:v 18000000 -speed 4 -pass 1 \
-pix_fmt yuv420p \
-color_primaries 1 -color_trc 1 -colorspace 1 -color_range 1 \
-maxrate 26800000 -minrate 8040000 -profile:v 0 \
-vf scale=-1:-1:in_color_matrix=bt2020,format=rgb48,lut3d=bt2020_to_bt709_example.cube,scale=-1:-1:out_color_matrix=bt709 \
-vcodec libvpx-vp9 -f webm /dev/null && \
ffmpeg -i strobe_scientist.mkv -y -b:v 18000000 -pass 2 \
-pix_fmt yuv420p \
-color_primaries 1 -color_trc 1 -colorspace 1 -color_range 1 \
-maxrate 26800000 -minrate 8040000 -profile:v 0 \
-vf scale=-1:-1:in_color_matrix=bt2020,format=rgb48,lut3d=bt2020_to_bt709_example.cube,scale=-1:-1:out_color_matrix=bt709 \
-vcodec libvpx-vp9 -f webm SDR_strobe_scientist_18Mbps-static.webm
- Çıkış dosyası: SDR_strobe_scientist_18Mbps-static.webm
- Kodlama süresi: 124 m23 sn
- Diskteki dosya boyutu: 165 MB
HLG'yi VP9 HLG10 10 bit PQ'ya dönüştürme
HLG kaynağı gerekir. strobe_scientist_hlg.mkv şeklindeki giriş dosyasını kullandık.
Örnek D: 18 Mb/sn 4k 2 Geçişli HLG
ffmpeg -y -i strobe_scientist_hlg.mkv -b:v 18000000 -pass 1 -speed 4 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 18 -colorspace 9 -color_range 1 \
-maxrate 26800000 -minrate 8040000 \
-profile:v 2 -vcodec libvpx-vp9 -f webm /dev/null && \
ffmpeg -y -i strobe_scientist_hlg.mkv -b:v 18000000 -pass 2 \
-pix_fmt yuv420p10le \
-color_primaries 9 -color_trc 18 -colorspace 9 -color_range 1 \
-maxrate 26800000 -minrate 8040000 \
-profile:v 2 -vcodec libvpx-vp9 \
HLG_HDR_strobe_scientist_18Mbps-static.webm
- Çıkış dosyası: HLG_HDR_strobe_scientist_18Mbps-static.webm
- Kodlama süresi: 186 metre
- Diskteki dosya boyutu: 165 MB
Özet
Çıkış dosyalarının boyutları değişiklik gösterir. Giriş 4,3 GB'tı.
Örnek | Hedef Çıkış | Diskteki Boyut | Kodlama Zamanı |
---|---|---|---|
A | 6 Mb/sn 4k Ölçeklenmemiş HDR | 51,2 MB | 142m |
B1 | 18 Mb/sn 4k ölçeklendirilmemiş HDR | 161MB | 213m |
B2 | 18 Mb/sn 1080 ölçeklendirilmiş HDR | 160MB | 113m |
C | 18 Mb/sn HDR - SDR ölçeklendirilmemiş | 165MB | 124m |
D | 18 Mb/sn HLG dönüşümü | 165MB | 168m |
1 geçiş değeri bazı yapılandırmalarda değişebileceğinden, HDR için 2 geçişli kodlama kullanılmasının önerildiğini unutmayın.
WebM ve MP4 çıkışında HDR sinyali için gerekli araçlar (Matroska komut satırı araçları)
Yazma sırasında FFmpeg, WebM/MKV'de SMPTE 2086 statik meta verilerini belirtmek için bir mekanizma sağlamaz, ancak akış içerdiğinde bunu bir giriş akışından yayar.
mkvtoolnix'in bir parçası olan mkvmerge aracı, uygulamanız gerektiriyorsa bu meta veriyi eklemek veya değiştirmek için kullanılabilir.
Aşağıda, yukarıda oluşturulan dosyalardan birine HDR meta verilerinin eklenmesine dair bir örnek verilmiştir. Bu, özellikle HDR içeriğini YouTube'a yüklenmeye hazırlamak için uygundur.
mkvmerge \
-o HDR_strobe_scientist_18Mbps.mkv\
--colour-matrix 0:9 \
--colour-range 0:1 \
--colour-transfer-characteristics 0:16 \
--colour-primaries 0:9 \
--max-content-light 0:1000 \
--max-frame-light 0:300 \
--max-luminance 0:1000 \
--min-luminance 0:0.01 \
--chromaticity-coordinates 0:0.68,0.32,0.265,0.690,0.15,0.06 \
--white-colour-coordinates 0:0.3127,0.3290 \
HDR_strobe_scientist_18Mbps.webm
Bu örnek, 0,6 saniye içinde HDR_strobe_scientist_18Mbps.mkv dosyasını üretir.