检索分辨率&上传前视频文件的持续时间

时间:2012-11-23 11:51:44

标签: java video metadata

我想检索最终用户在上传到我的服务器之前在我的网站上传的视频文件的分辨率和持续时间。 这样,我想检查分辨率和持续时间是否符合我的要求。通过许多API,他们只有在视频上传到服务器后才会提供此元数据信息。我的服务器在Linux上运行,我正在使用Java,Struts。是否有任何API会在视频文件上传之前提供此信息?

3 个答案:

答案 0 :(得分:2)

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

Here's a tutorial,其中包含有关如何使用HTML5文件API仅发送部分文件的代码示例。

答案 1 :(得分:1)

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

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

Using jQuery, Restricting File Size Before Uploading

答案 2 :(得分:1)

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

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