Image 使用ffmpeg提取帧时,jpeg颜色比png颜色差?

Image 使用ffmpeg提取帧时,jpeg颜色比png颜色差?,image,colors,ffmpeg,format,screenshot,Image,Colors,Ffmpeg,Format,Screenshot,在特定时间点从视频中提取静止帧时,如下所示: ffmpeg-i foobar.mp4-vframes 1-ss4:20-q:v1 example.png 我注意到使用PNG或JPG会产生不同的颜色。(注意-q:v1表示最高的图像质量) 以下是一些例子: vs vs vs 一般来说,JPG镜头似乎比PNG稍微暗一些,饱和程度也较低 使用exiftool或imagemagick的标识进行检查时,两个图像都使用sRGB颜色空间,并且没有ICC配置文件 知道是什么引起的吗?或者这两者中哪一个是“正确的”

在特定时间点从视频中提取静止帧时,如下所示:

ffmpeg-i foobar.mp4-vframes 1-ss4:20-q:v1 example.png

我注意到使用PNG或JPG会产生不同的颜色。
(注意
-q:v1
表示最高的图像质量)

以下是一些例子:

  • vs
  • vs
  • vs
  • 一般来说,JPG镜头似乎比PNG稍微暗一些,饱和程度也较低

    使用exiftool或imagemagick的
    标识进行检查时,两个图像都使用sRGB颜色空间,并且没有ICC配置文件

    知道是什么引起的吗?或者这两者中哪一个是“正确的”


    我还尝试用我的视频播放器(MPlayerX)保存截图,用JPG和PNG。在这种情况下,两种格式的帧转储看起来完全相同,它们看起来更像ffmpeg的JPG剧照

    我对ffmpeg不太了解。但是,一般来说,JPEG图像的压缩会稍微降低质量,以换取文件大小的大幅减小。大多数可以编写JPEG文件的程序都会有一个开关(或以任何方式选择),用于设置“质量”或“压缩”之类的内容。在我打开的六台机器中,我似乎没有ffmpeg,或者我会告诉你我认为正确的机器是什么。

    这与视频范围或级别有关。视频将颜色存储为亮度和色度,即亮度和色差,由于模拟信号时代的遗留原因,在8位编码中,黑色和白色不表示为0和255,而是分别表示为16和235。视频流通常应标记为这种情况,因为还可以存储视频,其中0和255分别为B和W。如果文件没有标记或标记错误,则某些渲染或转换函数可能会产生错误的结果。但我们可以强制FFmpeg以某种方式解释输入

    使用


    这会告诉FFmpeg采用studio或有限范围,并输出到全范围。由于颜色编码转换,颜色仍然不相同,但主要变化应该消失。

    我有与OP完全相同的问题,我尝试了您的命令,但PNG仍然比JPG亮。正如OP所说,当我从视频播放器(如VLC(PNG和JPG)上拍摄快照时,颜色更像ffmpeg的JPG输出。所以也许这是“正确的”一个不知道。我尝试改变src_范围和dst_范围,但PNG输出总是更亮。你还有什么建议吗?我还尝试了PNG支持的所有像素格式,还是一样的。老实说,我认为这里涉及到png编码器的一个bug,我不知道。正在尝试查找有关颜色范围的更多选项。
    ffmpeg -i foobar.mp4 -vframes 1 -ss 4:20 -q:v 1 -src_range 0 -dst_range 1 example.png/jpg