public string Cut(string ffmpegPath, string videoPath, string savePath, string imgSize, int sleepTime = 0xbb8)
        {
            if (File.Exists(ffmpegPath) && File.Exists(videoPath))
            {
                string str = savePath;
                string str2 = imgSize;
                string path = savePath.Substring(0, savePath.LastIndexOf(@"\"));
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                ProcessStartInfo startInfo = new ProcessStartInfo(ffmpegPath)
                {
                    WindowStyle = ProcessWindowStyle.Hidden,
                    Arguments = " -i " + videoPath + " -y -f image2 -t 0.001 -s " + str2 + " " + savePath
                };
                try
                {
                    Process.Start(startInfo);
                    Thread.Sleep(sleepTime);
                }
                catch
                {
                    return string.Empty;
                }
                if (File.Exists(savePath))
                {
                    return savePath;
                }
            }
            return string.Empty;
        }
 
        public string Cut(string ffmpegPath, string videoPath, string savePath, string imgSize, int sleepTime = 0xbb8, float startPos = 10, float cutTime = 1)
        {
            if (File.Exists(ffmpegPath) && File.Exists(videoPath))
            {
                string str = savePath;
                string str2 = imgSize;
                string path = savePath.Substring(0, savePath.LastIndexOf(@"\"));
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                ProcessStartInfo startInfo = new ProcessStartInfo(ffmpegPath)
                {
                    WindowStyle = ProcessWindowStyle.Hidden,
                    Arguments = string.Format(" -i {0} -t {1} -ss {2} -s {3} {4}", new object[] { videoPath, cutTime, startPos, str2, savePath })
                };
                try
                {
                    Process.Start(startInfo);
                    Thread.Sleep(sleepTime);
                }
                catch
                {
                    return string.Empty;
                }
                if (File.Exists(savePath))
                {
                    return savePath;
                }
            }
            return string.Empty;
        }
 
        protected void btnFetch_Click(object sender, EventArgs e)
        {
            try
            {
                string imgDir = Server.MapPath(@"ffmpeg\\");
                string ffmpegPath = imgDir + "ffmpeg.exe";
                string imgSize = txtImgSize.Text.Trim();
                int sleepTime = 500;
                string ret = string.Empty;
                float startPos = Convert.ToSingle(txtStartPos.Text.Trim());
                float cutTime = Convert.ToSingle(txtCutTime.Text.Trim());
 
                string temp = @"" + System.Configuration.ConfigurationManager.AppSettings["filepath"] + @"" + txtDownloadUrl.Text.Trim().Replace(@"/", @"\");
                temp = temp.Replace(@"\\", @"\");
                if (System.IO.File.Exists(temp))
                {
                    ret = Cut(ffmpegPath, temp, imgDir + "img\\" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".jpg", imgSize, sleepTime);
 
                    if (string.IsNullOrEmpty(ret))
                    {
                        ret = Cut(ffmpegPath, temp, imgDir + "img\\" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".jpg", imgSize, sleepTime, startPos, cutTime);
                    }
 
                }
                litMsg.Text = ret;
                imgDiagram.ImageUrl = ret.Replace(@"D:\site\20150914\", "/").Replace(@"\", "/");
            }
            catch (Exception ex) {
                litMsg.Text = ex.Message;
            }
        }
 

.net c# 视频剪切抓取缩略图的更多相关文章

  1. javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)

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

  2. 玩转FPGA边缘视觉——4k视频图像抓取

    随着现代图像及视频处理技术的不断发展,人们对图像处理提出了新的要求,最近几年,图像的分辨率和扫描频率都有了较大范围的提升,1080P分辨率的视频已经非常流行,2K甚至4K分辨率的图像也在火热发展中. ...

  3. 新视觉影院yy6080.org视频的抓取

    用fiddler 分析了一下, 从点连接 到 视频播放的过程 http://yy6080.org/v/103390 http://id.jiathis.com/id.php?u=http%3A%2F% ...

  4. 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理

    上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...

  5. php远程图片抓取存放到本地路径并生成缩略图

    private function _getcontent($content)    {               $img_dir='../Public/Img/Ycimg'; //远程图片抓取存放 ...

  6. android实现视频图片取缩略图

    取缩略图不等同于缩放图片. 缩放图片是保持不失真的情况下缩放处理,并进行平滑处理. 缩略图则不然,允许失真,目的只是取出图片的轮廓. 保存Bitmap图片 private void saveBitma ...

  7. 手把手视频:万能开源Hawk抓取动态网站

    Hawk是沙漠之鹰历时五年开发的开源免费网页抓取工具(爬虫),无需编程,全部可视化. 自从上次发布Hawk 2.0过了小半年,可是还是有不少朋友通过邮件或者微信的方式询问如何使用.看文档还是不如视频教 ...

  8. 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别

    背景 目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源的 AI 库,如:Emgu C ...

  9. 摄像头脸部识别 (1)opencv 抓取视频数据并保存

    摄像头脸部识别 (1)opencv 抓取视频数据并保存 基于python 和 opencv 3.4.0 (兼容 opencv 2.X 参考注释),详细如代码 import numpy as np im ...

随机推荐

  1. structs2之多文件上传

    //首先是Action部分import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; i ...

  2. nodejs字符与字节之间的转换

    new Buffer("Hello World").toString("base64"); /* yields SGVsbG8gV29ybGQNCg== */ ...

  3. 理论到实践,A/B测试不得不直面的4个统计学问题

    有放回?无放回? 从总体中随机抽取一个容量为n的样本,当样本容量 n足够大(通常要求n ≥30)时,无论总体是否符合正态分布,样本均值都会趋于正态分布.期望和总体相同,方差为总体的1/n.这即是中心极 ...

  4. PHP面向对象中的重要知识点(二)

    1. __toString: 当对象被打印时,如果该类定义了该方法,则打印该方法的返回值,否则将按照PHP的缺省行为输出打印结果.该方法类似于Java中的toString(). <?php cl ...

  5. Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。

    随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...

  6. 【Android】Android Studio 快速打开Github上的Demo

    ******* 注意 ******* Google 在15年12月2日发布了Android Studio 2.0,比起以前的版本速度提升了很多,所以强烈推荐各位朋友升级IDE! 1.修改:build. ...

  7. Java实现过滤中文乱码

    最近在日志数据清洗时遇到中文乱码,如果只要有非中文字符就将该字符串过滤掉,这种方法虽简单但并不可取,因为比如像Xperia™主題.天天四川麻将Ⅱ这样的字符串也会被过滤掉. 1. Unicode编码 U ...

  8. HBase相关

    hadoop和hbase节点添加和单独重启 有时候hadoop或hbase集群运行时间久了后,某些节点就会失效,这个时候如果不想重启整个集群(这种情况在很多情况下已经不被允许),这个时候可以单独重启失 ...

  9. Maven提高篇系列之(三)——使用自己的Repository(Nexus)

    这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...

  10. 浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式

    前言 因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅,也希望该文章日后能 ...