视频共享网站的一些心得分享--asp.net版

   做视频共享网站在现在是比较流行的,国外的youtube,国内如56,土豆,ku6,sina等都是视频做的比较好的,虽然视频总是能给用户最直观的感受,但是视频的资源消耗也是最大的,流媒体技术现在也到了开花结果的阶段,但是带宽的限制,很大程度限制了流媒体的发展,视频网站很大一部分钱其实都给了电信或者网通.其他限制流媒体发展诸如:用户终端,节目来源,产业政策,法律问题等...

      视频网站开发过程中会遇到哪些困难呢?我总结了下,如果你也遇到了,同时还没解决,希望我的方法能给你"拍一下脑袋"的作用.

      1.视频的上传,考虑视频大小,格式;上传过程中显示上传进度,关于进度条,.net没有很好的支持,网上有关于asp.net大文件上传同时显示进度条的控件,不过好像要收费,哈哈.不过可以用Openlab.Web.Upload.dll,这个上传控件不收费.但是它对上传文件的判断不足,需要自己加,因为js不支持对视频大小的判断,需要在后台程序中判断,格式和判断文件为空可以在js中判断;

function checkFile()

 { if(document.all.uploadFile.value=="") { alert('请选择一个文件!'); return false; }

 else { if(document.all.uploadFile.value.indexOf(".wmv")!=-1||document.all.uploadFile.value.indexOf(".avi")!=-1||document.all.uploadFile.value.indexOf(".mpg")!=-1||document.all.uploadFile.value.indexOf(".3gp")!=-1||document.all.uploadFile.value.indexOf(".mov")!=-1||document.all.uploadFile.value.indexOf(".mp4")!=-1||document.all.uploadFile.value.indexOf(".asf")!=-1||document.all.uploadFile.value.indexOf(".asx")!=-1||document.all.uploadFile.value.indexOf(".wmv9")!=-1||document.all.uploadFile.value.indexOf(".rm")!=-1||document.all.uploadFile.value.indexOf(".rmvb")!=-1||document.all.uploadFile.value.indexOf(".flv")!=-1) { return true; } else { alert('对不起,暂不支持您上传的格式!'); return false; }} }

.cs中用this.btnUpload.Attributes.Add("onclick","return checkload();");触发.

       2.视频格式的转换:使用ffmpeg或者mencode,也可以两者都用,如果你对ffmpeg有足够的了解,可以编译ffmpeg.使得支持几乎所有的视频格式,那就可以不需要mencode了,如果不行,就跟我一样,用别人编译好的,有ffmpeg转换大多数视频格式,不能转换的就用mencode;至于为什么一开始就不用mencode?因为mencode转换速度太慢.逼不得已才使用它!!!转换过程需要对进程的控制,因为用户的忍耐力总是有限的,如果视频很大,转换时间会很长,所以最好限制上传视频的大小.如果有人问为何不让用户先上传,转换我们来做呢?我们的目的是希望用户上传完之后就能预览自己上传的视频~

         
      System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(fileName1);
      startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
      string  argu = "-i \""+fpath +"\" -ab 56 -ar 22050 -b 500 -sameq -r 15 -s 480x360 " + targetFile;
      lblMsg.Text =argu;
      startInfo.Arguments =argu;
      Process proc=new Process(); ;
      proc=Process.Start(startInfo);
      proc.WaitForExit(180000); 
      if( !proc.HasExited )
      {proc.Kill();
       lblMsg.Text = "对不起,上传超时,建议您把视频分割成两部分上传.";}

       3.视频播放,这个比较简单,网上有很多免费的网页视频播放器,或者你可以自己做一个,我比较笨,只能做一个比较简单的flash播放器,就不拿出来宣传了.我决定去学flash加.net的编程,网页和功能可以做的很漂亮.

        最后祝大家愉快

posted on 2008-07-06 21:45  小顾问  阅读(941)  评论(1编辑  收藏  举报