• 视频上传


    1、用户上传视频文件
    注意:调整允许上传文件的大小:
    ASP.Net为了防止过大的http恶意请求阻塞网站,所以限定了每次上传文件最大4M,asp.net1.1中把用户上传的文件先放到内存中,2.0后如果上传的文件过大(默认256K)则会把文件保存到磁盘中。
    不要修改全局的web.config来解除限制,保证安全,只对视频上传的ashx文件夹添加独立的web.config

    <system.web>
    <httpRuntime maxRequestLength="204800" requestLengthDiskThreshold="1024"/>
    </system.web>

    maxRequestLength 表示最大上传文件的长度(KB为单位)。requestLengthDiskThreshold表示最多上传204800K(200M),大于1024K以后保存到磁盘,防止占用内存空间。

    通过根文件夹和子文件夹中设置不同的AppSettings值来看到:子文件夹中的Web.Config可以覆盖父文件夹中的设置。这样对于上传的文件夹才把上传限制放开到200MB。

    2、启动FFMepg进行转码、抓缩略图
    最牛的:利用ffmpeg让用户上传任意格式的视频、生成预览图片、动态gif预览图片,然后转换为flv、多线程。

    //创建并启动一个新进程
    Process p = new Process();
    //设置进程启动信息属性StartInfo,这是ProcessStartInfo类,包括了一些属性和方法:
    p.StartInfo.FileName = Server.MapPath("/ffmpeg/ffmpeg.exe"); //程序名
    p.StartInfo.UseShellExecute = false;
    //-y选项的意思是当输出文件存在的时候自动覆盖输出文件,不提示“y/n”这样才能自动化
    
    // string srcFileName = Server.MapPath("/Video/aa.avi");
    //string destFile =Server.MapPath("/Video/1.jpg");
    //p.StartInfo.Arguments = "-i " + srcFileName + " -y -f image2 -ss 53 -t 0.001 -s 600x500 " + destFile; //执行参数
    
    
    string srcFileName = Server.MapPath("/Video/aa.avi");
    string destFileName = Server.MapPath("/Video/a.flv");
    p.StartInfo.Arguments = "-i " + srcFileName + " -y -ab 56 -ar 22050 -b 800 -r 29.97 -s 420x340 " + destFileName; //执行参数
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中
    p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
    p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
    p.Start();
    p.BeginErrorReadLine();//开始异步读取
    p.WaitForExit();//阻塞等待进程结束
    p.Close();//关闭进程
    p.Dispose();//释放资源

    转码结束后p.WaitForExit()才会返回

    这样在转码、抓图结束后在数据库中添加一条记录(建一个和视频表:Id、Title、FlvPath:Flv的路径、ThumbPath:缩略图的路径)

    3、做一个页面展示所有的视频,点击某个视频后打开页面,使用OsFLVPlayer播放视频

  • 相关阅读:
    java 常用第3方工具
    反射与内省
    UDP通讯协议实例
    多线程及线程并发库Executors
    Deque 双端队列 Stack 堆栈
    Collections工具类
    Map 接口
    PHP控制电脑重启 关机
    ThinkPHP框架研究之一 基本函数 M和D的区别
    textarea输入输出的处理
  • 原文地址:https://www.cnblogs.com/guohuiru/p/3057051.html
Copyright © 2020-2023  润新知