我的应用程序允许用户使用createUploadUrl()模式通过Google App Engine将.mp4文件上传到Google云端存储。上传工作正常,我能够在处理程序中获取相应的FileInfo对象。我正在使用App Engine SDK 1.8.2 for Java。
我需要从.mp4文件中获取“duration”属性并将其存储在我的数据库中,但FileInfo对象不提供对此元数据的访问。我对如何做到这一点有了一些想法(我已在下面列出),但由于我正在开发的项目有几个遗留依赖项,因此没有一个是非常简单的。
我很想听听你对如何解决这个问题的任何想法或建议(如果你有的话,最好是任何成功的故事!)
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();
}
答案 0 :(得分:1)
Google云端存储是内容类型无关的,即它以相同的方式处理任何类型的内容(视频,音乐,zip文件,文档,您的名字)。它也不解析或“读取”上传的内容(无论如何都在REST加密)。由于Google云端存储无法了解mp4等特定文件格式的细节,因此您无法在API中找到任何此类功能。我假设AppEngine及其FileInfo对象具有相同的保留。
答案 1 :(得分:0)
你可以谷歌“python mp4解析器”,看看是否有任何问题......
答案 2 :(得分:0)
回复解决方案我最终还是继续。
我使用名为mediaelement.js(http://mediaelementjs.com/)的视频播放器插件从GCS加载上传的文件。视频播放器有一个“持续时间”属性,每次加载一个新的视频文件时都会更新,这使得整个过程非常简单。
我正在调查的其他两个选项涉及1)使用名为mp4parser(https://code.google.com/p/mp4parser/)的java实用程序将上传的文件从Google Cloud Storage加载到GAE中,并手动提取持续时间元数据和2)更新打开源上传实用程序名为Plupload(http://plupload.com/),用于在文件上载时提取持续时间元数据。
希望这可以帮助遇到类似问题的其他人!