minio/oss 的 python/java sdk 如何获取一个存储在 minio/oss 中的视频的时间长度?

minio 的 python/java sdk 如何获取一个存储在 minio 中的视频的时间长度?

图片.png

假设,我上传了一个视频 mp4 文件到 minio 的 bucket 中。

现在我有一个需求,获取这个 mp4 文件的视频时长

但是怎么做到?

我并不想下载视频到本地在本地判断(但是下载比如前512字节是可以接受的,但是通过前 512 字节,足够判断吗?)

同样的问题,我还想问 oss、s3 等等对象存储有什么解决方案?

视频是直接在前端上传的,minio、oss、s3 这些可以在上传的时候,就自定义一些存储字段吗?用这些自定义的存储字段存储视频时长?

阅读 3k
2 个回答

问了一下chatgpt,是可以通过读取前512字节读取视频长度的。
但是我感觉应该可以在上传的时候给文件加一个额外的metadata去标识视频的长度,然后从minio读取文件的时候再读取metadata获取视频长度。对于已经上传到minio上的文件,可以通过脚本统一更新一下视频文件的metadata信息。

还是存储到 metadata 里面比较优雅,通过判断 video 的前几个字节判断,我觉得还是成本比较高

import oss2

access_key_id = '<your-access-key-id>'
access_key_secret = '<your-access-key-secret>'
endpoint = 'http://oss-cn-hangzhou.aliyuncs.com'
bucket_name = '<your-bucket-name>'

auth = oss2.Auth(access_key_id, access_key_secret)
bucket = oss2.Bucket(auth, endpoint, bucket_name)

# 上传文件
object_key = 'example.mp4'
local_file = '/path/to/example.mp4'

# 设置自定义视频时长字段
metadata = {'x-oss-meta-video-duration': '120'}  # 设置视频时长为120秒

# 使用put_object_with_callback方法上传文件并设置自定义元数据
bucket.put_object_with_callback(object_key, local_file, headers=metadata)

print("文件上传成功!")
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题