0

我想检索最终用户在我的站点中上传的视频文件的分辨率和持续时间,然后再将其上传到我的服务器。这样,我想检查分辨率和持续时间是否符合我的要求。经过许多 API,它们都只有在视频上传到服务器后才提供此元数据信息。我的服务器在 Linux 上运行,并且正在使用 Java、Struts。在上传视频文件之前,是否有任何 API 可以提供此信息?

4

3 回答 3

2

考虑通过 AJAX 将文件开头的一小部分上传到服务器端。在大多数文件格式中,50-100 KB 的数据就足够了(这个数字可以根据文件格式确定;在 FLV、AVI、MKV 文件中,甚至几 KB 就足够了)。然后服务器端可以使用mediainfoxuggle或plain ffmpeg 来获取尺寸和持续时间,并相应地允许或禁止客户端上传。

这是一个教程,其中包含有关如何使用 HTML5 文件 API 仅发送文件的一部分的代码示例。

于 2012-11-26T09:21:35.630 回答
1

您可以(现在)使用 HTML5 在客户端检查大小(和其他一些东西,但没有持续时间和分辨率,AFAIK):

http://www.html5rocks.com/en/tutorials/file/dndfiles/

使用 jQuery,在上传前限制文件大小

于 2012-11-23T13:47:19.777 回答
1

在支持 HTML5 的浏览器上,您可以使用 MP4 解析器(例如mp4.js)来解析文件头。

  • 要获取文件持续时间,您需要找到moov文件的原子,并在其中找到mvhd原子。持续时间(以秒为单位)可以通过将mvhd的 Duration 字段除以 TimeScale 字段来计算。
  • 要获得分辨率,您需要在moov原子内部找到trak视频轨道的原子(忽略音轨或其他轨道,如果您遇到它们;通常文件只有一个视频轨道),并在其中找到tkhd原子,它具有宽度和高度字段。
于 2012-11-24T20:24:12.070 回答