视频管理模块代码总结 (1)对上传的flash截取视频并自动生成图片

项目中需要做一个简单的视频管理功能。

需要能上传视频,并能对上传完成的视频自动截取。

 (1)自动截取视频并生成图片的代码如下:

 /// <summary>
        /// 根据上传flv生成图片,并返回图片路径
        /// </summary>
        /// <param name="vFileName"></param>
        /// <returns></returns>
        private string CatchImg(string vFileName)
        {
            string srcFileName = vFileName;
            //取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add   key="ffmpeg"   value="E:\51aspx\ffmpeg.exe"   />   
            //string   ffmpeg=System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];   
            string ffmpeg = Server.MapPath("ffmpeg\\ffmpeg.exe").Replace("VideoShare\\", "");
            vFileName = Server.MapPath(vFileName).Replace("VideoShare\\", "");
            if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(vFileName)))
            {
                return "";
            }

            //获得图片相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpg
            string srcImageName = System.IO.Path.ChangeExtension(srcFileName, ".jpg");
            string flv_img_p = System.IO.Path.ChangeExtension(vFileName, ".jpg");
            flv_img_p = flv_img_p.Replace("videos", "images");

            //图片绝对路径,如:D:\Video\Web\FlvFile\User1\0001.jpg   
            //string flv_img_p = HttpContext.Current.Server.MapPath(flv_img);

            //截图的尺寸大小,配置在Web.Config中,如:<add   key="CatchFlvImgSize"   value="240x180"   />   
            //string   FlvImgSize=System.Configuration.ConfigurationSettings.AppSettings["CatchFlvImgSize"];  
            string FlvImgSize = "240x180";

            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

            //此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg   0.4.9调试通过   
            startInfo.Arguments = "   -i   " + vFileName + "   -y   -f   image2  -ss   8  -t   0.001   -s   " + FlvImgSize + "   " + flv_img_p;
            try
            {
                System.Diagnostics.Process.Start(startInfo);
            }
            catch
            {
                return "";
            }
            System.Threading.Thread.Sleep(4000);
            ///注意:图片截取成功后,数据由内存缓存写到磁盘需要时间较长,大概在3,4秒甚至更长;   
            ///这儿需要延时后再检测,我服务器延时8秒,即如果超过8秒图片仍不存在,认为截图失败;   
            ///此处略去延时代码.如有那位知道如何捕捉ffmpeg.exe截图失败消息,请告知,先谢过!   
            if (System.IO.File.Exists(flv_img_p))
            {
                return "../" + srcImageName.Replace("videos", "images");
            }

            return "";
        }


这里另需要下载一个ffmpeg.exe的程序。如需要可通过邮箱或QQ发送



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值