Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video 使用ffmpeg将图像序列转换为视频时,颜色会混乱_Video_Ffmpeg - Fatal编程技术网

Video 使用ffmpeg将图像序列转换为视频时,颜色会混乱

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从PNG序列生成视频,但生成的视频与源文件相比颜色错误。获得正确的颜色很重要,因为我们将视频资源与图像资源并排使用,并且颜色必须完全匹配(或者至少在视觉上尽可能相似,以避免不和谐)

我们的PNG输入文件位于sRGB颜色配置文件中

下面是我们正在运行的命令:

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%完美匹配。当然是