zoukankan      html  css  js  c++  java
  • 视频网站相关(视频解码、特大文件上传等)

    一. 大文件上传分析

    需要解决的问题

    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里 系统初始化是应用
    第二层为系统参数  第三层位游戏项目应用参数 第四层为单个视频个别参数
    初始上传的视频 读取游戏项目应用参数 如果项目参数未配置 读取系统参数

    编码的规则以及方法 在后台管理中配置 提供主要功能的界面操作(界面操作在整理中 还未完成) 以及全部的功能的参数操作

    效果图:

  • 相关阅读:
    这 100 道 Python 题,拿去刷!!!
    快速入门 TensorFlow2 模型部署
    零基础入门 Kubernetes,你需要知道这些
    Java 面试必考难点,这一个教程全搞定
    Flask实战:如何从零开发“知乎”
    关于layui表格渲染templet解析单元格的问题
    清除input输入框的历史记录
    phpmyadmin导入导出大数据文件的办法
    yiiaseInvalidCallException The cookie collection is read only.
    Yii2.0关闭自带的debug功能
  • 原文地址:https://www.cnblogs.com/dubing/p/2087032.html
Copyright © 2011-2022 走看看