ترميز VP9 HDR

الفيديو بنطاق عالي الديناميكية (HDR) هو تكنولوجيا مخصّصة للكبار. هناك اليوم عدد من معايير المواءمة التدريجية.

للحصول على صورة متطوّرة عن تطوّر الفيديو بنطاق عالي الديناميكية، يمكنك الاطّلاع على مقالة WikiPedia فيديو بنطاق عالي الديناميكية.

يمكن استخدام FFmpeg مع VP9 لكل من (1) ضغط مصادر النطاق العالي الديناميكية إلى مخرجات النطاق الديناميكي القياسية (SDR) أو (2) لإعادة تجميع مصدر نطاق عالي الديناميكية إلى تنسيقات HDR المتوافقة مع الويب.

مصادر الإدخال

في الوقت الحالي، عند ترميز HDR باستخدام VP9، يمكن استخدام أي برامج ترميز عالية العمق (10 بت) تتوافق مع FFmpeg كإدخال (على سبيل المثال، VP9 Profile 2 and 3,H.264 (10-bit) وDNxHR وHEVC وProRes وet al). اطّلِع أيضًا على مقالة دعم YouTube تحميل فيديوهات بنطاق عالي الديناميكية (HDR).

مدى وصول المخرجات المشفّرة:

في الوقت الحالي، وبشكل عام، تتضمّن الأجهزة المستهدفة أي أجهزة يمكنها فك ترميز VP9 Profile 2 وإخراجها إلى شاشة HDR.

  • Chromecast Ultra + تلفزيون متوافق مع HDR
  • تحديث إصدار Chrome 64 Canary على نظام التشغيل Windows 10 Fall Creators Update مع تفعيل علامة النطاق العالي الديناميكية (HDR) (هذه أداة تصحيح أخطاء جيدة).
  • أي تلفزيون مزوّد بتقنية HDR مع VP9 Profile 2
    • جميع طُرز Samsung بتقنية HDR لعام 2017 (flatpanelshd.com) وطُرز عام 2016 التي تبدأ بـ "KS"
    • جميع طُرز LG 2017 HDR (بالإضافة إلى بعض طُرز LG G6 للعام 2016)
    • على الأجهزة الجوّالة، الأجهزة التي تتوافق مع تقنية VP9 Profile 2 المسرَّعة للأجهزة فك ترميز النطاق العالي الديناميكية بدقة 10 بت (Meizu Pro 7)
    • تعتيم UHD من 2017

إعدادات سطر الأوامر في FFmpeg لتفعيل VP9 Profile 2 وHDR EOTF

يجب إنشاء FFmpeg بدعم 10 بت (أو حتى 12 بت).

في الأمثلة أدناه، نستخدم إصدارًا ثابتًا من ffmpeg يتوافق مع 10 بت. ويمكنك استخدام نص الإصدار البرمجي لإنشاء النص البرمجي الخاص بك، أو يمكنك اتباع الإرشادات على موقع FFmpeg.

في ما يلي سطر أوامر FFmpeg قابل للاستخدام لترميز HDR إلى معايير SMPTE 2084 (PQ EOTF) مع VP9:

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

تقسيم المعلمات الرئيسية المقدمة هنا:

mpmpeg الإصدار الثابت بدعم 10 بت
-pass 1 يتطلب النطاق العالي الديناميكية ترميزًا من تمريرين. في هذا المثال، يتم إخراج أول إدخال إلى /dev/null وتتم معالجته في الذاكرة خلال البطاقة الثانية.
-pix_fmt yuv420p10le لضبط تنسيق YUV 4:2:0 10 بت
-color_primaries 9 BT2020. راجع الصفحة 5 و6 من هذا المستند للمزيد من التفاصيل.
-color_trc 16 يضبط 16 خصائص النقل على SMPTE 2084. PQ 18 يضبط ميزة خصائص النقل SMPTE 2086 HLG
-colorspace 9 colorspace هي &"مصفوفة_coefficients." ويجب تحديد ذلك بشكل يتناسب مع المحتوى الرئيسي. (مثل: bt709، bt2020_ncl). في هذا المثال، يجب أن تكون 9 لـ bt2020_ncl. لمزيد من المراجع، اطّلع على الصفحة 12 من هذا المستند.
-color_range 1 نطاق الألوان (0 = غير محدَّد، 1 = mpeg/studio/tv و2 = jpeg/full/pc)
-profile:v 2 يجب استخدام ملف شخصي أو 2 أو 3 لإنشاء نطاق عالي الديناميكية.
-vcodec libvpx-vp9 استخدِم برنامج ترميز VP9.

أمثلة للترميزات

تستخدِم جميع الأمثلة التالية الملف المصدر strobe_scientist.mkv

وكملاحظة عامة عن معدلات نقل البيانات بترميز HDR، ننصح باستخدام معدّل نقل بيانات أعلى بنسبة 25-30% مقارنةً بترميز SDR بحجم 8 بت. تستهدف الأمثلة عادةً 18 ميغابت في الثانية. يمكن تحقيق نتائج جيدة بتقنية HDR من خلال استخدام معدّلات نقل بيانات بمعدّل 12 ميغابت في الثانية مع ضبط الأداء الأمثل.

تم تنفيذ الترميزات على نظام Ubuntu Linux مع المواصفات التالية:

  • المعالج: وحدة معالجة مركزية من فئة Intel(R) Core(TM) 4x i5-6500 بسرعة 3.20 غيغاهرتز
  • الذاكرة (ذاكرة الوصول العشوائي): 8060 ميغابايت (1492 ميغابايت مستخدمة)
  • الرسومات: Intel HD Graphics 530 (Skylake GT2)
  • نظام التشغيل: Ubuntu 16.04 LTS

تحويل إلى PYV 4:2:0 10 بت

المثال أ: 6 ميغابت في الثانية 4K بمعدل تمريرين
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
مثال B1: 18 ميغابت في الثانية 4k 2-Pass
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
مثال B2: 18Mbps 1080p 2-pass
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

تحويل النطاق العالي الديناميكية إلى تنسيق SDR باستخدام جدول البحث (LUT)

عند تحويل تقنية HDR إلى SDR، يجب أن يكون برنامج تحويل الترميز على دراية بكيفية ضبط مستويات السطوع والألوان مع مساحة إضاءة أقل من BT.709 ونطاق السطوع الذي لا يتبع نطاق HDR. للحصول على أفضل النتائج، يمكن استخدام جدول البحث الذي يصف كيفية تنفيذ عملية الربط، خاصةً بالمحتوى. توضح الأمثلة C وD كيفية استخدام جدول البحث. استخدمنا bt2020_to_bt709_example.cube

مثال ج: 18 ميغابت في الثانية 4k HDR إلى SDR مع LUT
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

تحويل HLG إلى VP9 HLG10 10-PQ

يتطلب مصدر HLG. استخدمنا ملف الإدخال strobe_scientist_hlg.mkv

المثال د: 18 ميغابت في الثانية 4k 2-Pass 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

الملخّص

ملفات الإخراج ذات حجم متفاوت. القيمة المُدخلة هي 4.3 غيغابايت.

مثال الإخراج المستهدف الحجم على القرص وقت الترميز
أمبير 6kMbps 4k Unscaled HDR 51.2 ميغابايت 142 م
ب 1 18 ميغابت في الثانية 4K بدون نطاق عالي الديناميكية 161 ميغابايت 213 م
ب 2 18 ميغابايت في الثانية بدقة 1080 بكسل 160 ميغابايت 113 م
C 18 ميغابت في الثانية بتقنية HDR إلى SDR بدون تغيير الحجم 165 ميغابايت 124 م
D إحالة ناجحة HLG بسرعة 18 ميغابت في الثانية 165 ميغابايت 168 م

يُرجى ملاحظة أنه يُنصح بالترميز باستخدام "مرتين" مع تقنية HDR، لأنّ ذلك قد يختلف من نوع إلى آخر.

الأدوات اللازمة لإشارة HDR في إخراج WebM وMP4 (أدوات سطر الأوامر في Matroska)

في وقت الكتابة، لا تقدّم FFmpeg آلية لتحديد SMPTE2086 البيانات الوصفية الثابتة في WebM/MKV، على الرغم من أنها ستنشرها من تدفق بيانات الإدخال عند احتواء البث عليها.

يمكن استخدام أداة mkvmerge، وهي جزء من mkvtoolnix لإدراج هذه البيانات الوصفية أو تعديلها، إذا كان تطبيقك يتطلب ذلك.

في ما يلي مثال على إدراج البيانات الوصفية ذات تنسيق HDR في أحد الملفات التي تم إنشاؤها أعلاه. ويناسب هذا الخيار على وجه الخصوص إعداد المحتوى بتقنية HDR لتحميله إلى YouTube.

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

ينتج عن هذا المثال الملف HDR_strobe_scientist_18Mbps mkv.، بعد 0.6 ثانية.