当前位置: 首页 > 知识库问答 >
问题:

minio - Minio 合成视频分块后 MD5 值变化问题?

小牛22988
2024-04-15

在minio 合成视频分块后,发现文件的md5值发生了变化,找不到原因,但是合成的视频大小和时长都和本地的一致。minio的版本号是8.4.3

下面是合成的代码

    //将分块文件上传至minio    @Test    public void uploadChunkTest() throws Exception {        String path = "F:\\work\\chunk\\";                        File chunk = new File("F:\\work\\chunk\\");        File[] files = chunk.listFiles();        for (int i = 0; i < files.length; i++) {            UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder().bucket("testbucket").filename("F:\\work\\chunk\\" + i).object("chunk/" + i).build();            minioClient.uploadObject(uploadObjectArgs);            System.out.println("上传分块: "+i+" 成功");        }    }    @Test    public void minioMergeTest() throws Exception {        File chunkFolder = new File("F:\\work\\chunk\\");        File[] files = chunkFolder.listFiles();        List<ComposeSource> composeSourceList = Stream.iterate(0, i -> ++i).limit(files.length)                .map(i -> ComposeSource.builder().bucket("testbucket")                        .object("chunk/" + i).build()).collect(Collectors.toList());        ComposeObjectArgs composeObjectArgs = ComposeObjectArgs.builder().bucket("testbucket").object("testMinio.mp4").sources(composeSourceList).build();        minioClient.composeObject(composeObjectArgs);    }

上传前视频的md5值,本地合成分块也是d41d8cd98f00b204e9800998ecf8427e
上传后分块合并后变为e224d958e5116b328924653de00cb3a7

查询过上传后分块的数量和分块的大小,都与本地的一致

共有1个答案

相高谊
2024-04-15

Minio 在处理文件上传和合成时,可能会因为一些内部机制导致文件的 MD5 值发生变化。尽管你上传的文件大小和时长与本地一致,但 MD5 值的变化可能是由于以下几个原因:

  1. 数据校验:Minio 在上传和下载文件时,会进行数据的校验。如果数据在校验过程中有任何微小的改变(例如,由于网络传输错误或存储过程中的微小差异),MD5 值就会发生变化。
  2. 分块上传和合成:你在上传和合成文件时,文件被分成了多个块。每个块在上传和合成时可能经历了不同的处理过程,这可能导致合成后的文件与原始文件的 MD5 值不同。
  3. 文件元数据:除了文件内容本身,文件的元数据(如时间戳、访问权限等)也可能影响 MD5 值。尽管这些元数据通常不会改变文件的内容,但它们可能会影响文件的 MD5 哈希值。

由于你提到 Minio 的版本号是 8.4.3,我建议你查看 Minio 的官方文档和更新日志,看看是否有关于这个问题的说明或修复。同时,你也可以尝试升级 Minio 到最新版本,看看问题是否得到解决。

最后,如果你关心文件的完整性,你可以考虑使用其他方法来验证文件的完整性,而不仅仅是依赖 MD5 值。例如,你可以比较上传前后的文件大小、时长和其他关键特征,以确保文件的一致性。

 类似资料:
  • 使用APP拍摄视频,然后上传至minio,有的视频文件 contentType为 video/mp4,而有的contentType 为 application/octet-stream,这是为什么呢? video/mp4类型的在浏览器上可以直接预览,而application/octet-stream 类型的在部分浏览器上显示格式不支持 我使用sm3设置了http 返回的header中content

  • Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。 Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和Fr

  • Rclone是一个开源的命令行程序,用来同步文件和目录进或者出云存储系统。它旨在成为"云存储的rsync"。 本文介绍了如何使用rclone来同步MinIO Server。 1. 前提条件 首先从min.io下载并安装MinIO。 2. 安装 然后从rclone.org下载并安装Rclone。 3. 配置 当配置好后,MinIO会输出下面的信息 Endpoint: http://10.0.0.3

  • restic是一个快速,高性能,并且安全的备份工具。这是一个在BSD 2-Clause License下的开源项目。 在本文中,我们将学习如何使用restic将数据备份到MinIO Server中。 1. 前提条件 从这里下载并安装MinIO。 2. 安装 从这里下载并安装restic。 3. 配置 如下所示,在环境变量中设置MinIO认证信息。 export AWS_ACCESS_KEY_ID=

  • Deis Workflow是一个开源的PaaS ,可以很容易地在自己的服务器上部署和管理应用程序。Workflow建立于Kubernetes和Docker基础上,提供一个轻量级的PaaS,受Heroku启发的工作流。Workflow有多个模块化比较好的组件(请看 https://github.com/deis),它们之间使用Kubernetes system和一个对象存储服务进行通信。它有良好的可

  • MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。 MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。 Docker 容器