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

于是想到用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");

C#视频取帧图的更多相关文章

  1. iOS视频录制、压缩导出、取帧

    概述 花了点时间研究了一下常用的视频获取.录制.压缩.取帧图功能,分享给大家了!相信阅读完本篇文章,会对你有很大的帮助的! 本篇文章研究几下以个功能: 视频录制 从相册选择视频 保持视频到相册 获取视 ...

  2. vue 截取视频第一帧

    最近自己写项目,在项目中涉及功能点又截取视频帧的点:需求澄清:移动端封面展示,平台上传图片(多张上传)取第一张上传图片为封面图:如上传视频则截取视频第一帧作为封面图: 实现思路:h5  video标签 ...

  3. Python音视频开发:消除抖音短视频Logo的图形化工具实现

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现 ...

  4. javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  5. ubuntu16.04安装配置mysql数据库,分割视频为帧图像

    参考http://wiki.ubuntu.org.cn/MySQL%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97 版本为5.7 一.安装 安装命令sudo apt-get i ...

  6. Python协程爬取妹子图(内有福利,你懂得~)

    项目说明: 1.项目介绍   本项目使用Python提供的协程+scrapy中的选择器的使用(相当好用)实现爬取妹子图的(福利图)图片,这个学会了,某榴什么的.pow(2, 10)是吧! 2.用到的知 ...

  7. Python-爬取妹子图(单线程和多线程版本)

    一.参考文章 Python爬虫之——爬取妹子图片 上述文章中的代码讲述的非常清楚,我的基本能思路也是这样,本篇文章中的代码仅仅做了一些异常处理和一些日志显示优化工作,写此文章主要是当做笔记,方便以后查 ...

  8. Python3爬虫系列:理论+实验+爬取妹子图实战

    Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...

  9. Android -- 获取视频第一帧缩略图

    干货 从API 8开始,新增了一个类: android.media.ThumbnailUtils这个类提供了3个静态方法一个用来获取视频第一帧得到的Bitmap,2个对图片进行缩略处理. public ...

随机推荐

  1. mysql: Data source rejected establishment of connection, message from server: "Too many connections"

    http://www.oschina.net/question/558677_66703 com.mysql.jdbc.exceptions.MySQLNonTransientConnectionEx ...

  2. final 和static

    一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...

  3. Linux - D-Bus

    http://en.wikipedia.org/wiki/D-Bus D-Bus is a free and open-source inter-process communication (IPC) ...

  4. smali语法(一)

    一.什么是Smali? Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种dex格式文件的汇编器,反汇编器.其语法是一种宽松式的Jasmin/dedexer语法 ...

  5. class中的私有属性的访问

    在类中的私有属性设置: class Name(): __init__(self): self.__name = 'arnol'` 如何查看: 1,在类中定义一个方法: def getname(self ...

  6. Dos下mySql

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ...

  7. Finder 快捷键

    记录几个常用的 Finder 快捷键: 复制 Finder 里选中的路径:option+cmd+c 地址栏跳到指定路径:shift+cmd+g 增加标签:cmd+t 显示/隐藏 标签栏:shift+c ...

  8. Android 开发之static引发的冤案

    前段时间在android手机系统上开发一个小东西,先介绍一下他吧: 就是当手指点击屏幕不论什么地方的时候会出现点击的特效,就是在你点击屏幕的地方会出现各种效果,比方:雪花纷飞;出现五彩的肥皂泡:鲜花盛 ...

  9. php 数组转xml 数组转json xml转数组 json转数组

    array->xml <?php function array2xml($array, $tag) { function ia2xml($array) { $xml="" ...

  10. MVC3 类型 System.Web.Mvc.ModelClientValidationRule 同时存在

    用文本编辑器打开  工程名称 .csproj 找到 1. <Reference Include="System.Web.WebPages" /> 2. <Refe ...