将视频转换为帧,然后返回到视频,而不改变python中的帧



我正在用python编写一个脚本,将视频(让此视频为X)转换为帧(X '),然后返回到相同的视频(Y)。现在,当我将视频Y分解为帧(Y ')时,图像不等于X '帧,即它们具有不同的哈希值。我希望它们是相同的,如果不相同是预期的行为,我如何使它们相同?

有没有办法从

' video,X->框架,X ',——>视频,Y,——>frame,Y ',——>视频,Z,——>帧,Z

如视频XYZ和帧X 'Y 'Z '

在各自的集合中彼此相同。我尝试过多种视频编解码器(mp4, avi, mkv)和图像格式(tif, jpeg, png)。根据我的理解,有损压缩编解码器不应该工作,因为像tif这样的无损压缩也不能产生一致的输出。

我在其他教程中遵循了这些视频到帧和帧到视频,但无济于事。如有任何帮助,不胜感激。

这是由于生成损失,也可能是由于色彩空间转换和色度子采样。您必须使用支持颜色空间(或"像素格式")的无损工作流。

的例子:

  1. 输出无损图像格式:

    ffmpeg -i input.mp4 x_%02d.tiff
    

    查看ffmpeg -h encoder=tiff支持的像素格式列表。

  2. 使用framehash muxer获取帧哈希值:

    ffmpeg -v error -i x_%02d.tiff -f framehash -hash md5 -
    #stream#, dts,        pts, duration,     size, hash
    0,          0,          0,        1,   230400, 56a4401ee8f46ef4205508ab06926bdc
    0,          1,          1,        1,   230400, 3ff51f5bef6dbf619fd0469bd29f63ec
    0,          2,          2,        1,   230400, ef51487b9905ecb4638c9901251a1dde
    
  3. 使用无损编码器对视频进行编码:

    ffmpeg -framerate 25 -i x_%02d.tiff -c:v ffv1 video_y.mkv
    
  4. 输出无损图像格式:

    ffmpeg -i video_y.mkv y_%02d.tiff
    
  5. 获取帧哈希值:

    ffmpeg -v error -i y_%02d.tiff -f framehash -hash md5 -
    #stream#, dts,        pts, duration,     size, hash
    0,          0,          0,        1,   230400, 56a4401ee8f46ef4205508ab06926bdc
    0,          1,          1,        1,   230400, 3ff51f5bef6dbf619fd0469bd29f63ec
    0,          2,          2,        1,   230400, ef51487b9905ecb4638c9901251a1dde
    

散列匹配。

相关内容

  • 没有找到相关文章

最新更新