屏幕上的视频影响白色的设备亮度
Device brightness with video on screen affecting white color
视频演示(请观看,18s):https://youtu.be/4HtkadKEnWM
当我降低设备的亮度时,iOS 似乎正在将白色变为灰白色。对于我的用例,重要的是视图背景实际上是白色的,这样视频看起来可以无缝地融入背景。有趣的是,当我截屏或录屏时,并没有出现这种效果。
我处于浅色模式,没有任何自定义颜色 space 设置。
有人知道如何解决这个问题吗?谢谢!
你对颜色有误解
白色并不真正存在,但它被定义为标准照明的(非镜面)反射(关于纸张的 ISO 标准说近 90% 的反射)。
所以白色是靠亮度的,所以同样的光,你可以看到黑色、灰色、白色,或者超白。刚出来的眼睛很快就适应了参考白。
对于发光设备,这更棘手,因为发光不依赖于环境光。出于这个原因,多年来我们有某种环境光检测,所以软件可以告诉屏幕降低亮度(or/and 改变白平衡 [在这种情况下,“白平衡”是关于颜色,而不是亮度)。
如果一个人把屏幕调暗,可能是因为环境光线较弱,这样的人看不清白色。无论如何,眼睛(和大脑)会很快适应。
简而言之:白色是最大亮度下的均匀颜色。如果你调暗屏幕,它会在短时间内呈现灰色,因为我们对最大亮度有不同的想法。但我们会适应。
注意:我们有两个适配:亮度和颜色。好的电影制作人可能会永远使用它,但调色师也必须处理它(在长长的灰色场景上,不是为了让我们适应并看到它是白色的)。
注意:硬件可能有两种亮度:一种是经典的RGB亮度,一种是全局亮度(背光,如果现在没有更多背光的话)。如果您保存屏幕截图,它只需要 RGB,而不是更正后的值。但如果你拍照,每个相机都会检查亮度,并自动曝光照片(图像的平均亮度应呈现为中灰色)。所以在这种情况下你也看不出差异(如果你真的想看到它,你应该将相机设置为手动曝光模式,并以相同的设置拍摄两张照片)。
在与 Apple 支持人员沟通后,我们发现 video_full_range_flag
没有被 ffmpeg 设置。 Re-encoding 使用以下 ffmpeg 命令的视频有效:ffmpeg -i input.mp4 -map 0 -c copy -bsf:v h264_metadata=video_full_range_flag=1 output.mp4
.
视频演示(请观看,18s):https://youtu.be/4HtkadKEnWM
当我降低设备的亮度时,iOS 似乎正在将白色变为灰白色。对于我的用例,重要的是视图背景实际上是白色的,这样视频看起来可以无缝地融入背景。有趣的是,当我截屏或录屏时,并没有出现这种效果。
我处于浅色模式,没有任何自定义颜色 space 设置。
有人知道如何解决这个问题吗?谢谢!
你对颜色有误解
白色并不真正存在,但它被定义为标准照明的(非镜面)反射(关于纸张的 ISO 标准说近 90% 的反射)。
所以白色是靠亮度的,所以同样的光,你可以看到黑色、灰色、白色,或者超白。刚出来的眼睛很快就适应了参考白。
对于发光设备,这更棘手,因为发光不依赖于环境光。出于这个原因,多年来我们有某种环境光检测,所以软件可以告诉屏幕降低亮度(or/and 改变白平衡 [在这种情况下,“白平衡”是关于颜色,而不是亮度)。
如果一个人把屏幕调暗,可能是因为环境光线较弱,这样的人看不清白色。无论如何,眼睛(和大脑)会很快适应。
简而言之:白色是最大亮度下的均匀颜色。如果你调暗屏幕,它会在短时间内呈现灰色,因为我们对最大亮度有不同的想法。但我们会适应。
注意:我们有两个适配:亮度和颜色。好的电影制作人可能会永远使用它,但调色师也必须处理它(在长长的灰色场景上,不是为了让我们适应并看到它是白色的)。
注意:硬件可能有两种亮度:一种是经典的RGB亮度,一种是全局亮度(背光,如果现在没有更多背光的话)。如果您保存屏幕截图,它只需要 RGB,而不是更正后的值。但如果你拍照,每个相机都会检查亮度,并自动曝光照片(图像的平均亮度应呈现为中灰色)。所以在这种情况下你也看不出差异(如果你真的想看到它,你应该将相机设置为手动曝光模式,并以相同的设置拍摄两张照片)。
在与 Apple 支持人员沟通后,我们发现 video_full_range_flag
没有被 ffmpeg 设置。 Re-encoding 使用以下 ffmpeg 命令的视频有效:ffmpeg -i input.mp4 -map 0 -c copy -bsf:v h264_metadata=video_full_range_flag=1 output.mp4
.