zoukankan      html  css  js  c++  java
  • C#视频取帧图

    由于项目里页面有许多视频资料需要展示给用户查看,因此需要做一个视频列表,原设计是列表显示视频第一帧图,但实际上很多视频第一帧是纯黑底色。

    于是想到用js利用canvas截图,最后发现由于浏览器跨域限制,这种方法只能取内部视频的帧图。问题是,现在谁还把大量视频资料放在自己的服务器上呢,那不是找死吗。。。。唉。。。。

    没办法,只能再想招了,最后只能用c#后台逐个视频取对应帧图,然后跟视频路径一起存放到视频数据记录表里的办法。

    本文只贴出C#后台取视频的帧图的代码。

    首先,需要下载ffmpeg这个专业的视频处理工具,网上很地方都可以下,也可以点击这里去下载。实现本文功能,只需要包里的ffmpeg.exe这个可执行文件,将他复制一份到项目文件夹下——自己根据需要放一个合理的地方,本文是放在bin文件夹下。

    然后就是代码咯:

            /// <summary>
            /// 从视频画面中截取一帧画面为图片
            /// </summary>
            /// <param name="videoName">视频文件pic/guiyu.mov</param>
            /// <param name="widthAndHeight">图片的尺寸如:240*180</param>
            /// <param name="cutTimeFrame">开始截取的时间如:"1"</param>
            /// <returns></returns>
            public string GetPicFromVideo(string videoName, string widthAndHeight, string cutTimeFrame)
            {
                var vdoName   = videoName.Substring(videoName.LastIndexOf("/") + 1);
                var fileName  = vdoName.Split('.')[0];
                var basePath  = Server.MapPath("~");
                var ffmpeg    = basePath +  "bin\ffmpeg.exe";
                var srcName   = basePath + videoName.Replace("/","\");
                var objName   = basePath + "Images\VideoCover\" + fileName + ".jpg";

                var startInfo = new ProcessStartInfo(ffmpeg);
                startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                startInfo.Arguments = " -i " + srcName + " -y -f image2 -ss " + cutTimeFrame + " -t 0.001 -s " + widthAndHeight + " " + objName;
                try
                {
                    Process.Start(startInfo);
                    return "/Images/VideoCover/" + fileName + ".jpg";
                }
                catch (Exception re)
                {
                    Log.WriteLog(re.Message);
                    return "";
                }
            }

    //调用举例:
    var re = GetPicFromVideo("video/MyTest.mov", "160*100", "1");


  • 相关阅读:
    uniapp 常用的基础知识
    uniapp接口请求(第一种)
    系统对象的使用——Cookie,ViewState,Session,Application
    网页跳转
    存储过程的使用——游标
    存储过程的使用——循环,条件语句
    存储过程的使用——定义变量
    页面读取英语单词
    加密
    XMind: ZEN 快捷键
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/11057504.html
Copyright © 2011-2022 走看看