1、用户上传视频文件
注意:调整允许上传文件的大小:
ASP.Net为了防止过大的http恶意请求阻塞网站,所以限定了每次上传文件最大4M,asp.net1.1中把用户上传的文件先放到内存中,
2.0后如果上传的文件过大(默认256K)则会把文件保存到磁盘中。
不要修改全局的web.config来解除限制,保证安全,只对视频上传的ashx文件夹添加独立的web.config
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播放视频
VideoList.aspx。ViewVideo.aspx?Id=5
视频页面的静态化、无刷新评论……
ubb
[b]djf[b]
[url][url]
C:\Program Files\Baofeng\StormPlayer\Core\codecs
暴风:ffmpeg.dll文件所在的路径。