视频网站相关(视频解码、特大文件上传等)
2011-06-22 14:54 熬夜的虫子 阅读(1239) 评论(1) 编辑 收藏 举报一. 大文件上传分析
需要解决的问题
1.解决客户端请求限制
web.config中的httpRuntime节的 maxRequestLength 参数的默认值为 4096 (4 MB)。所以,默认情况下不能上传大于这个值的文件。
我们这里这要更改这个参数即可
2.服务器内存占用问题
利用HttpModule截断http请求、获取HttpWorkerRequest对象然后重新对客户端请求数据进行分块分析整理,这样的处理结果可以使客户端上传的大小不再受限,但是httpRuntime还是会抛出一个页面的警告,不过与上传逻辑无关
3.大文件分块处理
首先判断预先加载的HTTP请求的部分数据
这个数据我测试了一下一般大概是49152左右,只要没超过这个大小,这次请求就不需要进行下面的分块处理 一次处理就完成了。
如果大于这个值的话 .net 2.0以上会自动分块处理,我在程序在分配出一块缓存 大小在webconfig里配置 appsetting里单位为K<add key="BufferSize" value="1024"/>
每次先处理完这个缓存里的数据后,继续向http索取下一步的数据
其中http请求数据并不是一次提交上来的,数据在任何一个地方都有可能出现断点问题,程序里针对断点的算法 参考了网上的一些资料,调试结果还是Ok的,这里面添加系统应用数据分析。作用是为了在下面的进度读取模块提供数据
主要的分块处理结果完成以后重新封装HTTP请求,
4.上传进度实时显示
由ajax轮询调用上面的信息,生成静态页面,包括当前上传大小、平均上传速度、已用时间大小、预计剩余时间大小、暂时做的比较粗糙还没有做成比较用好用户界面
二. 视频解码
1.工具使用
ffmepg,mencoder。2者的区别
ffmpeg 压缩一个 视频 文件,可能使用不到一分钟,但是 mencoder 却压缩了好几分钟,由于 mencoder 需要计算更多东西,所以,需要花更多的时间。ffmpeg 也可以压缩视频,不过,效果可是比mencoder 差好些。并且ffmpeg对","wmv", "rmvb", "rm" 的效果不是很好,所以考虑的性能以及功能,"asf", "avi", "mpg", "3gp", "mov" 类型和截图功能使用ffmepg,"wmv", "rmvb", "rm"类型使用mencoder实现
2.net调用系统工具
主要使用System.Diagnostics.Process 同时需要System.Diagnostics.ProcessStartInfo附带参数信息
3.异步处理
为了不让用户上传完以后还要编码时间,编码过程的实现由异步来处理,玩家ui上上传后就可以看到已审核的信息。
4.编码处理
根据玩家推广系统的实例 我对编码的参数设置进行了4层处理
第一层在webconfig里 系统初始化是应用
第二层为系统参数 第三层位游戏项目应用参数 第四层为单个视频个别参数
初始上传的视频 读取游戏项目应用参数 如果项目参数未配置 读取系统参数
编码的规则以及方法 在后台管理中配置 提供主要功能的界面操作(界面操作在整理中 还未完成) 以及全部的功能的参数操作
效果图:
原创作品允许转载,转载时请务必以超链接形式标明文章原始出处以及作者信息。 作者:熬夜的虫子 点击查看:博文索引 |
|