【问题标题】:image -> video -> image not lossless using avconv图像 -> 视频 -> 使用 avconv 的图像不是无损的
【发布时间】:2015-12-15 14:18:26
【问题描述】:

我正在尝试测试一些不同的视频编解码器丢失的信息量。我有一个 python 脚本,它使用 PyPNG 编写一系列 8 位 RGB 图像。然后我使用 avconv 对其进行编码,例如

avconv -r 1 -i ../frames/data%03d.png -c:v ffv1 -qscale:v 0 -r 1 

outffv1.avi

然后我像这样将它解码回 png 格式

avconv -r 1 -i outffv1.avi -r 1 ./outffv1/frame%03d.png

但是当我比较视频压缩前后的图像时,它们是不同的(平均绝对误差 ~15%)。令我困惑的是,这是真的(给予或接受)独立于编解码器

例如,对于一系列 qscale 值,我得到了类似的 libtheora 答案。

png 编码,即写入 png,并立即在没有视频压缩步骤的情况下重新加载,是无损的。

更新 - 更精确的工作示例:

此处为单个输入框:https://www.dropbox.com/s/2utk1xs2t8heai9/data001.png?dl=0 像这样编码成视频:avconv -r 1 -i ./frames/data%03d.png -c:v ffv1 -qscale:v 0 -r 1 outffv1.avi 此处生成的视频:https://www.dropbox.com/s/g1babae2a41v914/outffv1.avi?dl=0 在这里再次解码为 png:https://www.dropbox.com/s/8i8zg1qn7dxsgat/out001.png?dl=0 使用这个命令:avconv -r 1 -i outffv1.avi -qscale:v 31 -r 1 out%03d.png 和像这样不同的图像魔法 compare out001.png ./frames/data001.png diff.png 给出这个(非零)差异 https://www.dropbox.com/s/vpouk54p0dieqif/diff.png?dl=0

【问题讨论】:

  • 你的问题不是很清楚。你的意思是说你没想到png编码是无损的? PNG支持无损编码
  • 我希望/希望从视频到 png 的 avconv 编码是无损的。你知道是不是,或者是怎么做到的?
  • @nrob 你能分享一个示例 png 吗?你怎么比较?
  • 我正在使用 pypng 将它们加载到 python 中,然后使用 numpy 进行比较。这是一个示例 png dropbox.com/s/9qc0809kyqm4pi5/data000.png?dl=0
  • @nrob 由于 int 限制,使用 ffmpegffv1 的原始 4K 图像对我来说失败了,我必须看看有什么问题,因为我在 x64 上。在AVI 中将提供的缩放为2048x2048 的PNG 编码为ffv1(无损)并提取帧与imagemagick 的compare 没有区别。 Theora 是有损 AFAIK。

标签: codec avconv


【解决方案1】:

您的视频文件很可能使用 YUV 颜色格式。 PNG使用RGB。颜色的转换不是一个无损的过程。

【讨论】:

    猜你喜欢
    • 2013-11-19
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多