问题标签 [hdr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2491 浏览

aframe - 带有 envmap 的 Aframe gltf-model 演示

在aframe中加载GLTF-model非常方便,但是没有找到包含envmap纹理的案例。我想看看官方可以提供三个官方一样的案例。pmremGenerator.fromEquirectangular(texture) 函数用于使gltf模型产生真实的反射效果

https://threejs.org/examples/#webgl_loader_gltf https://threejs.org/examples/#webgl_materials_envmaps_hdr

0 投票
1 回答
692 浏览

ffmpeg - H.264 到 DNxHR 444 问题。颜色未正确转码(HDR 项目)。注:问题尚未解决

我在使用 FFmpeg 将 H.264 UHD HDR 文件转码为 mxf 容器中的 DNxHR 文件时遇到问题。问题是这两个文件看起来根本不一样,DNxHR 视频上的颜色看起来很褪色,我试图使转码尽可能无损(DNxHR 444 风格)。原始文件是我不久前翻录的电影,H.264、UHD、HDR,在 mkv 容器中。

我的目标:创建一个几乎无损的 DNxHR 文件,将其用作 Adob​​e Premiere Pro 中的源文件,并使用另一个质量较低的 DNxHR 文件作为编辑代理。我想这样做,而不是使用原始 H.264 作为源文件,因为它与代理文件不同步(我的意思是,当我打开和关闭代理图标时,你可以看出有一个短暂的延迟它们之间,这破坏了所有的编辑目的)。我的猜测是,这可能是因为 H.264 已压缩而 DNxHR 未压缩,并且由于我进行了很多快速剪辑,因此我需要尽可能同步源文件和代理文件。当源文件和代理文件都是 DNxHR 时,无论哪种风格,它们都完美同步。我不想和 Prores 一起去代理,

嗯,问题是当我将原始 H.264 文件导入 Premiere Pro 时,使用 DNxHR 代理,稍作编辑,然后直接从原始文件导出(H.264 10 位,具有 HDR 所需的所有设置输出启用)颜色看起来应该。当我对高质量 DNxHR 作为源文件执行相同操作时,使用完全相同的导出设置,颜色看起来会褪色。与任何 DNxHR 风格相同。

然后我用 VLC 打开了这两个文件(原始 H.264 和从 H.264 转码的高质量 DNxHR),我还可以看出 mxf 文件看起来已经褪色而 H.264 文件没有。所以这不是 Premiere 方面的出口问题,而是与原始转码有关。

我知道 DNxHR 444 与该编解码器一样无损,保留了所有 HDR 所需的数据,并且我相信 mfx 容器比 MOV 具有一些优势,MOV 是另一个支持 DNxHD/DNxHR 的容器。所以我不知道到底发生了什么。

我使用的命令是:

ffmpeg -channel_layout 63 -i input.mkv -map 0:0 -c:v dnxhd -vf "scale=in_range=limited:out_range=full" -color_range 2 -profile:v dnxhr_444 -pix_fmt yuv444p10le -acodec pcm_s24le -ar 48000 -ac 6 -channel_layout 63 -map 0:2 -hide_banner output.mxf

就像我说的,在转码之后,两个视频文件在颜色方面看起来有很大不同。在 Premiere 中使用它们并以完全相同的设置导出后,输出文件也会出现相同的差异。

Mediainfo 显示两个文件的预期数据: - 10 位,主要 10,级别 5,4:2:0,CBR,BT.2020 原始 h.264 文件。- DNxHR 444 文件的 10 位、4:4:4、CBR。

我在 Mediainfo 中注意到的一件事是两者都将 YUV 作为色彩空间,但 DNxHR 444 视频有一个额外的字段,上面写着 ColorSpace_Original: RGB。老实说,我不知道那是什么意思,因为原件是 YUV。颜色范围很好,从 0 到 1023(和色度范围 1023)。另一件事是它在 H.264 文件的颜色范围字段上说“有限”,但我读过这可能是 Mediainfo 对文件的错误或错误解释。

嗯,就是这样,任何帮助将不胜感激。我真的很想用 DNxHR 444 作为源文件和 DNxHR LB 作为代理进行编辑,所以我可以快速编辑并且没有同步问题,但是颜色是不可接受的。而且我确实知道我正在添加一个额外的转码步骤(从原始到 DNxHR),但是原始代理和 DNxHR 代理之间的同步问题,即使它可能是几分之一秒的延迟,使我的工作流程困难得多,因为我将不得不多次导出以查看是否在我想要的位置进行切割。无论如何都不理想。而且 Prores 显然不是一个选项,同步问题要严重得多。对我来说,这一切都归结为能够获得看起来尽可能接近无损的 DNxHR 444 文件,而这个目标显然涉及颜色。

提前致谢。

PS:文件大小对我来说不是问题,因此将整个 UHD HDR 电影转码为 DNxHR 444 也不是问题。

PS2:我尝试了不同的色度二次采样(如 DNxHR HQX 10 位,即 4:2:2),结果相同。还没有尝试过 8 位,但我不明白这一点,因为这是一个 HDR 项目。

更新:

我尝试使用 Adob​​e Media Encoder 而不是 FFmpeg 将 H.264 源文件从 H.264 源文件转码为 MXF 容器中的 DNxHR 视频文件,并且颜色没有再次正确转码,但这次它们似乎过度饱和而不是褪色. Adobe Media Encoder 没有提供太多调整空间,但我确保选择 444 10 位配置文件、相同分辨率 (UHD)、相同帧速率并以最高质量和最大位深度进行渲染。结果文件的 FFprobe 输出再次将 BT709 显示为颜色空间(使用 FFmpeg 转码后的输出文件也会发生同样的情况)。显然,似乎与 FFmpeg 无关。有任何想法吗?就像我无法将颜色从 H.264 正确地转码和保留到 DNxHR,即使使用其最高质量的风味和正确的命令设置(至少在我看来它们还可以)。我怎样才能发布这个,所以也许开发人员或在这里有很多经验的人可以给我们一个线索来了解正在发生的事情?谢谢。

PS:有关以下评论的更多潜在有用信息。

额外信息:

1) MXF DNxHR 文件的 FFprobe 输出(这个是 4:2:2,与 OP 上声明的命令相比,使用的命令的唯一区别是 -pix_fmt yuv444p10le 是 -pix_fmt yuv422p10le):

2) MP4 H.264源文件的FFprobe输出(这个是4:2:0, 10 bits, HDR):

0 投票
1 回答
3245 浏览

ffmpeg - 使用 ffmpeg 和 vaapi 对 HEVC 4K HDR 进行转码

我正在尝试为我的 LG OLED 电视使用 ffmpeg 和 VAAPI 硬件加速将 4K HEVC HDR 视频转码为较低的比特率。

我使用以下文件: 视频

使用以下命令:

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

使用 libx265 编码器(当然速度要慢得多)时,它可以正常工作:

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

  • 颜色范围
  • 原色
  • 传输特性

vaapi 编码的媒体信息:

libx265 编码的媒体信息:

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

编辑:这个补丁解决了这个问题: 补丁

0 投票
0 回答
140 浏览

c++ - 如何在opencv中使用imwrite保存非标准化的cv :: Mat?

我目前正在尝试将 CV_64FC3 类型的 cv::Mat 保存到我的硬盘中,浮点值在 0 到 5 之间。如果您想知道原因,请阅读下文。我一直在考虑以 hdr 格式保存它,但如果我只是调用imwrite("myname.hdr", myCV_64FC3);,他们在本教程http://www.programmersought.com/article/33831043697/中提到,它会输出一种格式,如果你再次阅读它,它是一个 UINT8 类型,不再包含浮点值。你如何正确保存它?

我为什么要这个?

我想用它来保存我的背景的标准偏差,它的浮点值大约为 0 到 5,可能会更高一些。现在我可以将它们转换为 CV_8UC3 并完成它,但它会将我的值四舍五入。虽然我想用它来设定 x 倍标准差的阈值,但我想保持这个精确度,因为 0.7 的标准差的 3 倍不是零。

有谁知道保存这个的方法吗?

0 投票
2 回答
1154 浏览

android - 使用 MediaCodec 在 Android 上处理 HDR10 视频

我想在Android上使用OpenGL ES做HDR10的色调映射,首先是获取帧数据。在Android上通过mediacodec解码视频后,它的数据在一个外部的oes纹理上,我想知道解码hdr10视频时纹理的内部格式是什么。

我可以从这个外部 oes 纹理中获取 10 位数据,如果可能的话,如何在 OpenGL ES 中处理 10 位数据(使用浮点纹理?)。

我曾尝试查询纹理的格式,但失败了,报告的值似乎不正确。纹理的宽度和高度也是如此。

0 投票
1 回答
474 浏览

android - Display.HdrCapabilities 和 configuration.isScreenHdr 有什么区别

我想知道 Android 上的 HDR 功能,所以我编写了以下代码来检查这一点。

在我的 Pixel2 手机上,结果是

我对此感到困惑,我知道Pixel2实际上可以播放HDR10内容,但为什么配置说它不支持HDR和广色域。

参考: https ://source.android.com/devices/tech/display/hdr

https://source.android.com/compatibility/android-cdd

0 投票
1 回答
4224 浏览

ffmpeg - FFmpeg 无法在过滤器支持的格式之间进行转换

我正在尝试使用 ffmpeg 和 opencl 进行 GPU 加速 HDR 色调映射(HDR->SDR),但我一直遇到这个错误:Impossible to convert between the formats supported by the filter 'Parsed_hwupload_1' and the filter 'auto_scaler_1'.
我试过用这个命令 使用文档过滤器图

这导致了这个日志

我正在使用 cuvid,因为即使我的 GPU 支持,我也无法让 ffmpeg 使用 nvdec 支持进行编译。任何帮助,将不胜感激!

0 投票
1 回答
468 浏览

unity3d - HDR 输出的当前状态

互联网上的大多数资源声称,在值可以任意大(在类型表示限制内)的高动态范围中执行计算后,必须将结果从 HDR 转换为标准动态范围,其中值在 [0, 1] 因为这是显示设备可表示的范围。

通常使用色调映射器,如 ACES 风格的电影色调映射器,在 PBR 渲染中特别流行。之所以如此,是因为无论如何这些值都会被限制在 [0, 1] 范围内,并且任何高于 1 的东西都会被忽略,从而导致既不现实也不令人愉悦的结果……或者他们会这样做吗?

我最近偶然发现了以下 NVIDIA 文章:https ://developer.nvidia.com/rendering-game-hdr-display 。似乎通过使用 NVIDIA 和 Windows 特定的 API,可以输出 HDR 值,以利用某些显示器的功能来显示非常大的色域和亮度。

我想知道为什么没有真正谈论这个。据我所知,即使是UnityUnreal等大型游戏引擎也不使用这种技术,而是使用色调映射器来输出 SDR 图像。

为什么会这样?HDR 输出是否仍处于技术演示阶段?是否没有能够显示它的消费级显示器(尽管许多显示器开始宣传为“HDR 显示器”)?还是我完全理解错了,没有 HDR 输出之类的东西,这只是愚人节的玩笑?

编辑:如果可能的话,我还希望了解有关使用 HDR 输出的跨平台方法的一些信息,尤其是在 OpenGL 中。

0 投票
1 回答
164 浏览

java - 将 ARCore 的 Estimated Environmental HDR Cube Map 保存到内存

ARCore 通过以下 API 调用提供场景的 HDR Cube 贴图:

我想将这些保存lightmaps到内部或外部存储器中。我怎样才能做到这一点?

0 投票
1 回答
106 浏览

ffmpeg - 为什么从 ffmpeg 读取的 Yuv 数据与原始输入 yuv 不同?

我用ffmpeg做HDR测试视频,我的做法是写一张图片,把图片转成yuv420p,然后用ffmpeg做HDR测试视频。

但是我发现从 mp4 读取的 yuv 数据与原始输入不同。我在这里停留了一段时间,有人知道如何从 mp4 读取正确的 yuv 数据吗?

我不知道如何验证我制作的视频是否正确任何反馈将不胜感激!