我想创建一个.Net MVC3内部网应用程序,作为用户在浏览器中上传、搜索和播放视频的存储库。
应用程序应提供以下内容:
- 允许用户上传.avi视频以及一些元数据(标题、描述、标签等)的表单
- 视频应该可以直接在浏览器中播放
- 搜索机制
- 每个视频都应该有一个相关的缩略图(视频中的随机帧),以便在搜索结果等中显示
注意事项:
- 原始视频均为avi格式(视频文件大小在200-500MB之间)
- 所有用户都将拥有一个支持HTML5视频播放的浏览器(无需向后兼容)
- 作为一个用户基础有限的intranet网站,我们可以强迫人们使用chrome起诉该应用程序
- 如果可能的话,视频文件应该存储在网络共享驱动器上(而不是网络服务器本身)
我可以处理其中的标准web应用程序部分(表单、数据库、搜索机制、视频播放等)。我需要一些指导的地方是处理、转换和存储视频的最佳方式,以便每个视频都可以直接在浏览器中播放。此外,该应用程序可能有一天会使用移动设备(平板电脑、手机等)使用,因此每个视频的低分辨率版本也应该可用,如果不太困难,视频也应该能够从网络服务器流式传输,而不是下载然后播放。
问题:
- 是否有一个领先的C#库在服务器端进行视频编码(视频上传后)?转换一个500MB的文件会有多慢
- 存储如此大的文件的最佳方法是什么?正如我所提到的,将它们存储在网络共享中是理想的,但这对视频播放有何影响
- 流媒体播放视频的最佳方式是什么?在.Net中有标准的方法吗
- 我在这里咬得太多了吗?有没有一个打包的解决方案(我们有钱),我可以购买并安装在我的本地硬件上,来完成这一切
对问题1和问题2 的思考
-
据我所知,有两个库是AVBlocks和FFlib.NET。FFlib.NET是FFMpeg 的包装器
-
文件的两个选项是数据库(作为Blob)和文件系统。如果选择前者,则可以将所有元数据和内容放在同一个存储中。但后者将不那么复杂,而且会更快,因为您直接从磁盘加载数据,而不必通过IDataReader类型的接口(当然需要测试/基准测试)