Video 使用ffmpeg将图像序列转换为视频时,颜色会混乱
我正在使用ffmpeg从PNG序列生成视频,但生成的视频与源文件相比颜色错误。获得正确的颜色很重要,因为我们将视频资源与图像资源并排使用,并且颜色必须完全匹配(或者至少在视觉上尽可能相似,以避免不和谐) 我们的PNG输入文件位于sRGB颜色配置文件中 下面是我们正在运行的命令:Video 使用ffmpeg将图像序列转换为视频时,颜色会混乱,video,ffmpeg,Video,Ffmpeg,我正在使用ffmpeg从PNG序列生成视频,但生成的视频与源文件相比颜色错误。获得正确的颜色很重要,因为我们将视频资源与图像资源并排使用,并且颜色必须完全匹配(或者至少在视觉上尽可能相似,以避免不和谐) 我们的PNG输入文件位于sRGB颜色配置文件中 下面是我们正在运行的命令: ffmpeg -r 30 -f image2 -s 1920x1080 -i bg_analyse_%05d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p output5.mp
ffmpeg -r 30 -f image2 -s 1920x1080 -i bg_analyse_%05d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p output5.mp4
下面是源PNG(左)和视频中同一帧(右)的比较:
从我们收集的信息来看,H.264不支持sRGB作为内置的颜色配置文件,因此我认为ffmpeg必须执行某种颜色转换。但是,默认的ffmpeg设置似乎使转换错误
如何让ffmpeg以与本地H.264颜色配置文件中的PNG源文件一样接近的视觉效果导出视频?我尝试了各种标志,试图指定输入颜色配置文件和更多,但没有产生预期的结果
当涉及到使用ffmpeg从PNG序列生成视频时,我没有看到很多人提到颜色配置文件。一定是因为大多数人对输出颜色不太挑剔,或者根本没有注意到?然而,在我们的应用程序中将源资源与视频输出并排放置时,区别是显而易见的
我已经尝试在多个播放器中播放视频文件,以确保它不是显示问题(QuickTime Player X、Chrome等)。所有播放器中的视频都完全相同(比源PNG轻)
编辑1: 最后,图像和视频将以电子(铬)显示。如果这改变了视频的生成方式
编辑2: 我们有一个AfterEffects项目,从中导出文件。我们找不到任何方法来输出正确的颜色,所以我们希望使用ffmpeg和一系列PNG(AE正确输出)可以让我们更好地控制最终的颜色。对于如何在AE中正确管理颜色也持开放态度 获得正确的颜色很重要,因为我们将视频资源与图像资源并排使用,并且颜色必须完全匹配 然后,你需要一个完全不同的方法。没有有损视频压缩是什么你想要的 如果此视频是某种动画,则必须找到另一种方法来重新创建它 你也可以尝试破解这个问题。例如,您的叠加PNG图形可能利用alpha通道将其颜色混合到视频的颜色中 获得正确的颜色很重要,因为我们将视频资源与图像资源并排使用,并且颜色必须完全匹配 然后,你需要一个完全不同的方法。没有有损视频压缩是什么你想要的 如果此视频是某种动画,则必须找到另一种方法来重新创建它
你也可以尝试破解这个问题。例如,您的叠加PNG图形可能利用alpha通道将其颜色混合到视频的颜色。阅读此内容@szatmary提供了非常有趣的信息,但我很难弄清楚我需要在ffmpeg标志方面做些什么,以便与您在文章中使用的BT.601测试文件相比,使用我们的sRGB输入文件获得正确的结果。还有其他的见解吗?@szatmary原谅线程劫持,但是
ffmpeg-y-f lavfi-i nullsrc=s=320x240:r=25:d=1-c:v libx264-profile:v基线-crf 18-color_range pc 601.mp4
可以在所有操作系统上运行。不合理的建议是尝试APNG:ffmpeg-framerate 30-i bg\u analysis\u05d.png输出.APNG
。无需处理颜色空间转换。我没有测试电子/铬。读这个@szatmary提供了非常有趣的信息,但我很难弄清楚我需要在ffmpeg标志方面做些什么,以便与您在文章中使用的BT.601测试文件相比,使用我们的sRGB输入文件获得正确的结果。还有其他的见解吗?@szatmary原谅线程劫持,但是ffmpeg-y-f lavfi-i nullsrc=s=320x240:r=25:d=1-c:v libx264-profile:v基线-crf 18-color_range pc 601.mp4
可以在所有操作系统上运行。不合理的建议是尝试APNG:ffmpeg-framerate 30-i bg\u analysis\u05d.png输出.APNG
。无需处理颜色空间转换。我没有测试电子/铬。更正:颜色必须尽可能接近,但我理解它可能不可能是100%完美匹配。当然有办法使视频显示颜色与同一显示器上的图像颜色相似吗?另一件事:我们有一个AfterEffects项目,从中导出文件。我们找不到任何方法来输出正确的颜色,所以我们希望使用ffmpeg和一系列PNG(AE正确输出)可以让我们更好地控制最终的颜色。开放的想法,如何管理颜色正确地在AE,太。@形成什么在这个视频?如果这只是来自AfterEffects的动画,为什么不在浏览器中创建动画呢?您将节省大量带宽,而且看起来会更好。我认为GreenSock在某些情况下可以或曾经能够直接从AfterEffects项目导入:还有其他类似的工具。视频太复杂,很难用GreenSock或类似工具复制(它包含效果等)。否则,这确实是一种选择。另外,在网络上制作动画将工作负载从内容制作者转移到了网络开发方面,这对我们来说现在不是一个选项(时间限制)。如果您已经阅读并应用了@szatmary的建议,并且您仍然对颜色输出不满意,那么您就没有什么其他可以做的了。你必须在有损视频的限制范围内工作。更正:颜色必须尽可能接近,但我理解它可能不可能是100%完美匹配。当然是