在jpeg图像上使用FFmpeg ffv1的无损视频未压缩但已扩展

用户1373984

FFmpeg / ffv1.3 / mkv是否有可能创建不大于其各部分之和的无损视频(如果是,则如何),如果没有,那么尺寸接近的好选择是什么?视频必须是无损的。

我正在尝试使用FFmpeg在一组类似的jpeg图像(来自网络摄像头的图像)上用ffv1.3创建一个mkv。我能够创建视频,但是它至少是jpeg图像集合大小的2倍。我本来希望获得相同或更高的压缩水平。

我确实知道jpeg本身已针对压缩进行了优化。但是,应该可以进一步压缩大量非常相似的图像,或者在这种情况下类似于原始图像的总和。

我用来创建文件的命令是:

ffmpeg -pattern_type glob -i'* .jpg'-vcodec ffv1-级别3 -an -pass 1 -passlogfile passlog -f matroska / dev / null

ffmpeg -pattern_type glob -i'* .jpg'-vcodec ffv1-级别3 -an -pass 2 -passlogfile passlog -f matroska〜/ foo.mkv

输入文件总数为24M,但生成的mkv为96M(每du -h)。

第二遍的结果:

ffmpeg version N-79053-g7eedad9 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.6 (Debian 4.6.3-14+rpi1)
  configuration: --enable-cross-compile --cross-prefix= --arch=armel --target-os=linux --prefix=/my/path/were/i/keep/built/arm/stuff
  libavutil      55. 19.100 / 55. 19.100
  libavcodec     57. 28.103 / 57. 28.103
  libavformat    57. 28.101 / 57. 28.101
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 39.102 /  6. 39.102
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
Input #0, image2, from '*.jpg':
  Duration: 00:00:21.32, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 25 fps, 25 tbr, 25 tbn, 25 tbc
File '/home/pi/foo.mkv' already exists. Overwrite ? [y/N] y
[swscaler @ 0x3671f30] deprecated pixel format used, make sure you did set range correctly
Output #0, matroska, to '/home/pi/foo.mkv':
  Metadata:
    encoder         : Lavf57.28.101
    Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p, 640x480, q=2-31, pass 2, 200 kb/s, 25 fps, 1k tbn, 25 tbc
    Metadata:
      encoder         : Lavc57.28.103 ffv1
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> ffv1 (native))
Press [q] to stop, [?] for help
frame=  533 fps=4.2 q=-0.0 Lsize=   97815kB time=00:00:21.32 bitrate=37584.4kbits/s speed=0.168x
video:97808kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.006607%

每个jpeg大约为43143字节(每ls -al),但是运行以下命令,该工具会指出每个图像为614400字节(在视频和独立的jpeg图像中)。我认为这是图像的未压缩大小(640x480x2)。

ffmpeg -pattern_type glob -i'* .jpg'-f framemd5-

以下是图片的结果,mkv的图片大小相同。

ffmpeg version N-79053-g7eedad9 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.6 (Debian 4.6.3-14+rpi1)
  configuration: --enable-cross-compile --cross-prefix= --arch=armel --target-os=linux --prefix=/my/path/were/i/keep/built/arm/stuff
  libavutil      55. 19.100 / 55. 19.100
  libavcodec     57. 28.103 / 57. 28.103
  libavformat    57. 28.101 / 57. 28.101
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 39.102 /  6. 39.102
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
Input #0, image2, from '*.jpg':
  Duration: 00:00:21.32, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 25 fps, 25 tbr, 25 tbn, 25 tbc
#format: frame checksums
#version: 1
#hash: MD5
#software: Lavf57.28.101
#tb 0: 1/25
#stream#, dts,        pts, duration,     size, hash
Output #0, framemd5, to 'pipe:':
  Metadata:
    encoder         : Lavf57.28.101
    Stream #0:0: Video: rawvideo (Y42B / 0x42323459), yuvj422p, 640x480, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
    Metadata:
      encoder         : Lavc57.28.103 rawvideo
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> rawvideo (native))
Press [q] to stop, [?] for help
0,          0,          0,        1,   614400, 2148ff8b95296f4bacc1099d13235063
0,          1,          1,        1,   614400, da330e2acd2f7d7a1e79fe79fccc90cf
0,          2,          2,        1,   614400, f55563c13a9f232ce32419fa26e37214
0,          3,          3,        1,   614400, c53d994fff0a9b26529fa8763deae520

编辑:最佳压缩(和良好的速度)来自于jpeg图像本身的容器:

ffmpeg -pattern_type glob -i'* .jpg'-vcodec复制-an -f matroska〜/ foo.mkv

生成的文件刚好超过24M(相对于9600万ffv1)。同样,解压缩后的jpeg图像为312M,在两种情况下它们都压缩得很好。如果我以jpeg以外的其他格式开始,那么ffv1会是理想的选择,但对我而言,有损的jpeg也是无损的初始图像。

坦迪·弗里曼(Tandy Freeman)

我通常发现,使用无损编解码器对有损视频进行编码会导致更大的文件大小。FFmpeg必须先解压缩您的输入,然后才能将其编码为ffv1,因此它可以从jpeg的未压缩版本开始工作。此处概述了该过程:https : //ffmpeg.org/ffmpeg.html#Detailed-description

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章