首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ffmpeg和vaapi转码HEVC4K HDR

用ffmpeg和vaapi转码HEVC4K HDR
EN

Stack Overflow用户
提问于 2020-01-19 19:52:16
回答 1查看 4.2K关注 0票数 6

我正在尝试将一个4K的HEVC视频转换成一个更低的比特率,使用ffmpeg和VAAPI硬件加速我的LG OLED电视。

我使用以下文件:视频

使用以下命令:

代码语言:javascript
复制
ffmpeg -init_hw_device vaapi=va:/dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device va -filter_hw_device va -i LG\ 4K\ HDR\ Demo\ -\ Daylight.mkv -map 0:0 -t 00:00:20 -c:v hevc_vaapi -sei hdr -qp:v 21 lg_vaapi.mkv

但是这个文件在我的电视上不被识别为HDR。

当使用libx265编码器(这是偏离航线的速度要慢得多)时,它工作得很好:

代码语言:javascript
复制
ffmpeg -i LG\ 4K\ HDR\ Demo\ -\ Daylight.mkv -t 00:00:20 -map 0:0 -c:v libx265 -preset medium -crf 18 -x265-params "colorprim=bt2020:colormatrix=bt2020nc:transfer=smpte2084:colormatrix=bt2020nc:hdr=1:info=1:repeat-headers=1:master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(11000000,40)" lg_libx265.mkv

当比较mediainfo在这两个文件上的输出时,我可以看到没有为视频轨道设置以下属性:

  • 颜色范围
  • 彩色原色
  • 转移特性

用于vaapi编码的mediainfo:

代码语言:javascript
复制
General
Unique ID                                : 168011494166392912924249315217763643529 
(0x7E65D636029A5354FE73998A5ED6B089)
Complete name                            : lg_vaapi.mkv
Format                                   : Matroska
Format version                           : Version 4
File size                                : 118 MiB
Duration                                 : 20 s 4 ms
Overall bit rate                         : 49.6 Mb/s
Writing application                      : Lavf58.20.100
Writing library                          : Lavf58.20.100
ErrorDetectionType                       : Per level 1

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L5@Main
HDR format                               : SMPTE ST 2086, HDR10 compatible
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 20 s 4 ms
Bit rate                                 : 48.6 Mb/s
Width                                    : 3 840 pixels
Height                                   : 2 160 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 59.940 (60000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.098
Stream size                              : 116 MiB (98%)
Writing library                          : Lavc58.35.100 hevc_vaapi
Default                                  : Yes
Forced                                   : No
Mastering display color primaries        : Display P3
Mastering display luminance              : min: 0.0040 cd/m2, max: 1100 cd/m2

libx265编码的mediainfo:

代码语言:javascript
复制
General
Unique ID                                : 261605749278874425324960669956061374077 (0xC4CF6F42FE952004772A02D5819DA67D)
Complete name                            : lg_libx265.mkv
Format                                   : Matroska
Format version                           : Version 4
File size                                : 155 MiB
Duration                                 : 47 s 715 ms
Overall bit rate                         : 27.3 Mb/s
Writing application                      : Lavf58.20.100
Writing library                          : Lavf58.20.100
ErrorDetectionType                       : Per level 1

Video
ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L5.1@Main
HDR format                               : SMPTE ST 2086, HDR10 compatible
Codec ID                                 : V_MPEGH/ISO/HEVC
Duration                                 : 47 s 715 ms
Bit rate                                 : 26.8 Mb/s
Width                                    : 3 840 pixels
Height                                   : 2 160 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 59.940 (60000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 10 bits
Bits/(Pixel*Frame)                       : 0.054
Stream size                              : 152 MiB (98%)
Writing library                          : x265 2.8:[Linux][GCC 9.1.0][64 bit] 10bit
Encoding settings                        : cpuid=1111039 / frame-threads=3 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=3840x2160 / interlace=0 / total-frames=0 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=3 / no-allow-non-conformance / repeat-headers / annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=25 / keyint=250 / gop-lookahead=0 / bframes=4 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=20 / lookahead-slices=8 / scenecut=40 / radl=0 / no-intra-refresh / ctu=64 / min-cu-size=8 / no-rect / no-amp / max-tu-size=32 / tu-inter-depth=1 / tu-intra-depth=1 / limit-tu=0 / rdoq-level=0 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / strong-intra-smoothing / max-merge=2 / limit-refs=3 / no-limit-modes / me=1 / subme=2 / merange=57 / temporal-mvp / weightp / no-weightb / no-analyze-src-pics / deblock=0:0 / sao / no-sao-non-deblock / rd=3 / no-early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / no-b-intra / no-splitrd-skip / rdpenalty=0 / psy-rd=2.00 / psy-rdoq=0.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=crf / crf=18.0 / qcomp=0.60 / qpstep=4 / stats-write=0 / stats-read=0 / ipratio=1.40 / pbratio=1.30 / aq-mode=1 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=1 / overscan=0 / videoformat=5 / range=0 / colorprim=9 / transfer=16 / colormatrix=9 / chromaloc=0 / display-window=0 / master-display=G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50) / max-cll=0,0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=5 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei
Default                                  : Yes
Forced                                   : No
Color range                              : Limited
Color primaries                          : BT.2020
Transfer characteristics                 : PQ
Matrix coefficients                      : BT.2020 non-constant
Mastering display color primaries        : Display P3
Mastering display luminance              : min: 0.0040 cd/m2, max: 1100 cd/m2

我怀疑颜色范围,颜色主要和传输特性是必要的,以使文件被我的电视识别为HDR。如何将这些属性添加到VAAPI编码的文件中?

编辑:此修补程序修复了问题:补丁

EN

回答 1

Stack Overflow用户

发布于 2021-05-09 10:54:09

颜色范围、颜色主值和传输特性是使文件被我的电视识别为HDR所必需的。

不,只是PQ的转移。文件可以是8位,或者使用BT.709主处理器,它仍然会触发HDR。

如何将这些属性添加到VAAPI编码的文件中?

在该修补程序之前,您需要使用-color_trc smpte2084 -color_primaries bt2020 -colorspace bt2020nc (首先是transfer,a.k.a )标记文件。声调响应曲线,第二是线性RGB的初值,第三是用于YCbCr编码的矩阵)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59813840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档