asp.net mvc 利用ffmpeg对视频进行转码截图

asp.net mvc 利用ffmpeg对视频进行转码成H264的mp4和截图
        学习了关于ffmpeg的操作,由于大部分视频播放插件已经不支持flv格式,而且html5的流行,在视频播放方面mp4格式使用得越来越多,所以接下来我将网上所学知识进行了整理,方便大家以后更容易使用。
第一步首先在网上下载ffmpeg.exe程序,并保存到工程目录中。


接下来上代码
 public class HomeController : Controller
    {
        // GET: Home
        //文件路径
        public static string ffmpegtool = "/Content/ffmpeg/ffmpeg.exe";
        public static string upFile = "/Content/oldVideo" + "/";//上传文件夹
        public static string imgFile = "/Content/ImgFile" + "/";//图片文件夹
        public static string playFile = "/Content/newVideo" + "/";//mp4文件夹
        public static string sizeOfImg = "600x400";//截取图片的宽与高
        public static string GetFileName(string fileName)
        {
            int i = fileName.LastIndexOf("\\") + 1;
            string Name = fileName.Substring(i);
            return Name;
        }
        //获取文件扩展名
        public static string GetExtension(string fileName)
        {
            int i = fileName.LastIndexOf(".") + 1;
            string Name = fileName.Substring(i);
            return Name;
        }
        //
        /// <summary>
        /// 转换文件并保存在指定文件夹下面(这里是相对路径)
        /// </summary>
        /// <param name="fileName">上传视频文件的路径(视频原文件)</param>
        /// <param name="imgFile">转换后的文件的路径(视频图片截图)</param>
        /// <returns>成功:返回图片地址;   失败:返回空字符串</returns>
        public string CatchImg(string fileName, string imgFile)
        {
            //
            string ffmpeg = Server.MapPath(ffmpegtool);
            //
            //
            string FlvImgSize = sizeOfImg;
            //
            System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            //
            ImgstartInfo.Arguments = "   -i   " + fileName + "  -y  -f  image2   -ss 2 -vframes 1  -s   " + FlvImgSize + "   " + imgFile;
            try
            {
                System.Diagnostics.Process.Start(ImgstartInfo);
            }
            catch
            {
                return "";
            }
            //
            if (System.IO.File.Exists(imgFile))
            {
                return imgFile;
            }
            return "";
        }
        /// <summary>
        /// 转换文件并保存在指定文件夹下面(这里是相对路径)
        /// </summary>
        /// <param name="fileName">上传视频文件的路径(原文件)</param>
        /// <param name="playFile">转换后的文件的路径(网络播放文件)</param>
        /// <param name="newfile">转换后的文件名称</param>
        public void ChangeFileVir(string fileName, string playFile, string newfile)
        {
            //取得ffmpeg.exe的路径
            string ffmpeg = Server.MapPath(ffmpegtool);
            //获取要转换的文件路径
            string filejuedui = Server.MapPath(fileName);
            if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(filejuedui)))
            {
                return;
            }
            string FlvImgSize = sizeOfImg;
            System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            //此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg   0.4.9调试通过

            FilestartInfo.Arguments = " -i " + filejuedui + " -c:v libx264 -strict -2 " + newfile;
            try
            {
                System.Diagnostics.Process ps = new System.Diagnostics.Process();
                ps.StartInfo = FilestartInfo;
                ps.Start();
            }
            catch (Exception e)
            {
            }
        }
        public ActionResult Index()
        {
            string uploadFile = Server.MapPath(upFile) + "1.avi";//要转换的文件路径
            string newimgFIle = Server.MapPath(imgFile) + "2.jpg";//截图图片保存路径
            string newFile = Server.MapPath(playFile) + "2.mp4";//转换后的文件路径
            CatchImg(uploadFile, newimgFIle);//截图
            //ChangeFileVir()参数说明 1.原文件夹相对路径 2.转换后存储的文件夹 3.转换后的文件路径
            ChangeFileVir(upFile + "1.avi", playFile, newFile);//视频转换
            return View();
        }
    }
下面是工程目录:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值