我想检索最终用户在上传到我的服务器之前上传到我的网站的视频文件的分辨率和持续时间。 这样,我想检查分辨率和持续时间是否符合我的要求。通过很多API,只有在视频上传到服务器后,他们才会提供这些元数据信息。我的服务器在Linux上运行,并使用Java,Struts。在视频文件上传之前是否有任何API会提供这些信息?检索上传前的视频文件的分辨率和持续时间
回答
考虑由AJAX将文件开头的一小部分上载到服务器端。在大多数文件格式中,50-100kbytes的数据应该足够了(这个数字可以根据文件格式来确定;在FLV中,AVI和MKV文件应该足够少)。然后,服务器端可以使用mediainfo,xuggle或plain ffmpeg来获取维度和持续时间,并相应地允许或禁止客户端上传。
Here's a tutorial有关如何仅使用HTML5文件API发送文件的一部分的代码示例。
你可以(现在)只是检查大小(和其他一些东西,但没有时间,也没有解决,据我所知),客户端,与HTML5:
http://www.html5rocks.com/en/tutorials/file/dndfiles/
和
在浏览器支持HTML5的情况下,您可以使用MP4解析器(如mp4.js)解析文件头。
- 要获取文件时间,你需要找到的文件
moov
原子,里面的mvhd
原子。持续时间(以秒为单位)可以通过将Timebar字段除以mvhd
的持续时间字段来计算。 - 要获得分辨率,您将需要在原子的
moov
,原子的trak
内找到视频轨道(忽略音轨或其他轨道(如果遇到它们;通常该文件只有一个视频轨道),以及在其中有tkhd
原子,它有宽度和高度域。
它只适用于MP4,如果我没有错。就我而言,最终用户也可以上传其他格式的视频文件(avi等)。如果视频文件是其他格式,这可以实现如何? –
你*可以*为其他文件格式实现解析器。最有可能的是,你不会找到像mp4.js这样的预先制作的库用于不太常见的格式,但实际上大多数格式比mp4更容易解析。但我承认,这让我的整个想法变得不切实际。 – onon15
好的。任何指向您可以建议在Java中使用不同格式的教程的链接? –
- 1. 查找远程媒体文件的视频分辨率和视频持续时间
- 2. 使用R检索视频文件持续时间(时间)
- 3. angular2获取上传前的视频持续时间
- 4. MediaStore不给我的尺寸,分辨率,持续时间和日期的视频文件
- 5. html5视频的当前/持续时间?
- 6. 如何在Android中以编程方式获取视频文件的持续时间和分辨率?
- 7. 视频分辨率
- 8. 网页上的视频分辨率
- 9. 检测特定频率和持续时间的嘟嘟声
- 10. libavcodec的视频获得持续时间和帧率
- 11. 获取视频文件的原生视频分辨率
- 12. 不知道文件持续时间的分割视频
- 13. iOS文件时间戳的分辨率
- 14. 检查命令行上音频文件的持续时间
- 15. 获取上传的视频在mvc中的持续时间
- 16. 如何获取上传的视频的持续时间?
- 17. HTML5视频持续时间
- 18. python cv2视频分辨率
- 19. 上传后获取视频的持续时间
- 20. 如何提取音频/视频文件的持续时间?
- 21. 检查kbps和分辨率视频,然后将其上传到服务器
- 22. 检索从kbps和大小的音频持续时间
- 23. AMR音频文件的持续时间
- 24. 使用JavaScript更改HTML 5.0视频上的视频分辨率
- 25. 如何检查iOS中视频的分辨率,比特率
- 26. 同时支持高分辨率和低分辨率图像
- 27. 源视频和低频音频的持续时间不同
- 28. 使用ImageResizer检索上传图像的分辨率
- 29. iPhone上的记录和导出视频的iPad分辨率?(视频示例)
- 30. 获取AVFoundation视频的持续时间
这要求浏览器符合HTML5。我的目标用户也是使用IE7/IE8而不是HTML5兼容的用户。你的评论? –
我们将在这里深入讨论...... :)您可以使用常规上传,并在服务器中途中止上传(通过强烈关闭套接字)。我不认为你可以用Java servlet来做到这一点,你需要类似CGI的接口,在这个接口中你可以以套接字流的形式访问请求负载。 – onon15