如何在scRGB色彩空间中从HDR视频中获取帧?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在scRGB色彩空间中从HDR视频中获取帧?相关的知识,希望对你有一定的参考价值。
我想创建一个简单的视频播放器,在HDR电视上播放HDR视频。例如,这个“LG Chess HDR”视频。它采用HEVC编码,位深为10位,像素格式为YUV420P10LE,具有元数据删除BT2020色彩空间和PQ传输功能。
在this NVIDIA article,我找到了下一个:
显示驱动程序获取scRGB后缓冲区,并将其转换为当前连接的显示所需的标准。通常,这意味着将色彩空间从sRGB原色转换为BT。 2020初选,缩放到适当的水平,并使用像PQ这样的机制进行编码。此外,如果显示连接需要,可能会执行RGB到YCC之类的转换。
这意味着我的播放器应该渲染scRGB color space中的像素(线性编码,sRGB原色,全范围是-0.5到小于+7.5)。所以我需要以某种方式从这个颜色空间中的源视频中获取帧,最好是FP16像素格式(半浮点,每个颜色通道16位)。我来到以下简单的管道将视频呈现给HDR:
source HDR video in BT2020 color space with applied PQ -> [some video library] ->
-> video frames with colors in scRGB color space -> [my program] ->
-> rendered video on HDR TV with applied conversions by display driver
我正在尝试使用FFmpeg作为此库,并且不了解如何从scRGB颜色空间中的源HDR视频获取帧。
我现在使用sws_scale FFmpeg方法来获取帧并了解过滤器API。但我没有找到任何信息和帮助,如何使用这些功能透明地获取scRGB中的帧,而无需解析所有源视频的元数据并为它们创建自定义视频过滤器。
请告诉我如何使用FFmpeg在scRGB色彩空间中获取帧。有人可以告诉其他我可以做的图书馆吗?
要么我错了,要么你挖掘太多细节。据我所知,对于UHD HDR解码,过程与SDR +相同,你应该将metadata
发送到TV / Monitor。
在PC的情况下,我相信你应该检查文件的UHD Metadata
和NVAPI Functions
部分。 FP16的东西可能来自OpenGL或DirectX,可能还有游戏和渲染,所以你不应该使用这些格式(只有10 + bit yuv),除非你重新发明轮子。
希望有所帮助。
以上是关于如何在scRGB色彩空间中从HDR视频中获取帧?的主要内容,如果未能解决你的问题,请参考以下文章