我有一个大型视频,其中包含一些对于其他嵌入方法(gif、png 序列等)来说太复杂/太长的动画,并且我们遇到了视频中颜色的问题。本质上,我们将网页背景作为视频的一部分包含在内,以防止视频播放时出现任何边缘。我们正在尝试使视频上的渐变背景与网页上的渐变背景相匹配,但颜色却相差甚远。
关于如何对 MP4 视频进行色彩校正有什么建议吗?或者任何使用 alpha 通道制作视频的 html5 安全方法?
不幸的是,每种流行的浏览器都以不同的方式处理 HTML 5 视频中的颜色,这使得很难获得一致的颜色。
H.264 (MP4) 比特流可以选择编码您正在使用的一组原色、传输特性和矩阵系数;这些可以用例如设置ffmpeg -x264opts colorprim=bt709:transfer=bt709:colormatrix=smpte170m
. 至少在 Mac OS X 上,Safari 和 Quicktime 会注意 H.264 视频中的这些位,并将颜色从指定编码转换为显示器的颜色配置文件,从而产生漂亮且一致的颜色。然而,Chrome 似乎只是忽略了这些位,并假设 H.264 和 VP8 视频都使用 BT.709 原色(即使对于 VP8 规范说应该是 BT.601 的 VP8 SD 视频),尽管它会将其转换为显示器的颜色配置文件。另一方面,Firefox 似乎跳过了 VP8 视频元素的输出转换,只是假设您的显示器是 sRGB,因此具有不同颜色配置文件的显示器之间的颜色不一致,并且在广色域显示器上可能会出现偏差。(我只在 Mac 上测试过;浏览器在其他操作系统上的工作方式可能不同。)
对不起,我没有任何好的解决方案。可以通过使用 canvas 处理 Javascript 中的视频来解决这个问题,尽管这样的东西可能性能很差。
对于任何感兴趣的人:当面对同样的情况时,我想到了一些技巧,例如:创建一个超小视频,使用原始视频的背景颜色(它们在任何浏览器中总是显示为相同的颜色)。例如,将其用作背景并将其大小调整为 100%。