gpt4 book ai didi

java - 从GAE上传到谷歌云存储后计算mp4视频的长度

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:55 24 4
gpt4 key购买 nike

上下文

我的应用程序允许用户使用 createUploadUrl() 模式通过 Google App Engine 将 .mp4 文件上传到 Google Cloud Storage。上传工作正常,我能够在处理程序中获取相应的 FileInfo 对象。我正在使用适用于 Java 的 App Engine SDK 1.8.2。

挑战

我需要从 .mp4 文件中获取“持续时间”属性并将其存储在我的数据库中,但 FileInfo 对象不提供对此元数据的访问。我有一些关于如何做这件事的想法(我在下面列出了这些想法),但考虑到我正在处理的项目有几个遗留依赖项,它们都不是很简单。

我很想听听您对如何解决这个问题的任何想法或建议(最好是任何成功案例,如果您有的话!)

想法

  1. 我知道有一些脚本和实用程序,例如 ffmpeg 和 mdls(适用于 mac)可以从文件中读取元数据,但我的理解是这些无法在 Google App Engine 中运行,我需要踢使用诸如 Google Compute Engine 之类的东西关闭单独的进程。
  2. 我可以创建一个自定义的 Flash 上传控件,当用户选择要上传的文件并通过标准表单提交将其传入时,它会读取持续时间逻辑。
  3. 我还知道有一个 Google Cloud Storage JSON API 现在处于 Beta 阶段。我没有看到任何允许我从 .mp4 文件读取“持续时间”属性的功能,但我可能遗漏了一些东西......

代码

HTML 表单

<form name="myForm" id="myForm" action="<%=createUploadUrl("/upload, uploadOptions)%>" method="POST" enctype="multipart/form-data">
<input type="file" name="uploadFileControl" id="uploadFileControl" value="Select...">
<input type="submit" value="Submit">
</form>

服务器端处理程序

DAO dao = new DAO();
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
Map<String, List<FileInfo>> fileInfos = blobstoreService.getFileInfos(req);
List<FileInfo> uploadedFile = fileInfos.get("uploadFileControl");

if(uploadedFile != null) {
FileInfo file = uploadedFile.get(0);
String fileName = file.getFilename();
}

最佳答案

Google Cloud Storage 与内容类型无关,也就是说,它以相同的方式处理任何类型的内容(视频、音乐、zip 文件、文档,应有尽有)。它也不会解析或“读取”上传的内容(无论如何都是在 REST 中加密的)。由于 Google Cloud Storage 不可能知道给定文件格式(如 mp4)的细节,因此您不会在 API 中找到任何此类功能。我假设 AppEngine 及其 FileInfo 对象也是如此。

关于java - 从GAE上传到谷歌云存储后计算mp4视频的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18730161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com