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. Android属性动画之ObjectAnimator控制

    Android为我们提供了大量的动画效果,如何通过这些动画来达到我们需要的效果呢?今天就为大家总结一下ObjectAnimator动画控制事件. 该项目的的布局文件只有两个控件:ImageView和B ...

  2. J2EE修炼之四书五经[转自2004年程序员]

    J2EE修炼之四书五经 作者:彭晨阳 J2EE其实没有四书五经,因为J2EE一直如汹涌澎湃的大江,推陈出新,不断高速发展,这是一种带领我们走向未来的技术.当然,如何在这种气势如虹的潮流之中不至于迷失方 ...

  3. 基于HTML5 WebGL实现3D飞机叶轮旋转

    在上一篇<基于HT for Web矢量实现2D叶轮旋转>中讲述了叶轮旋转在2D拓扑上的应用,今天我们就来讲讲叶轮旋转在3D上的应用. 在3D拓扑上可以创建各种各样的图元,在HT for W ...

  4. ECharts+BaiduMap+HT for Web网络拓扑图应用

    前一篇谈及到了ECharts整合HT for Web的网络拓扑图应用,后来在ECharts的Demo中看到了有关空气质量的相关报表应用,就想将百度地图.ECharts和HT for Web三者结合起来 ...

  5. OpenJudge 666:放苹果 // 瞎基本DP

    666:放苹果 总时间限制:  1000ms     内存限制:  65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1 ...

  6. OpenJudge 2985数字组合 解析报告/DP

    2985:数字组合 总时间限制:  1000ms 内存限制:  65536kB 描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如:n=5,5个数分别为1,2,3,4,5,t=5: ...

  7. SQL--视图

  8. 将RichTextBox的内容直接写入数据库:

    将RichTextBox的内容直接写入数据库: private void button1_Click(object sender, EventArgs e) {    System.IO.Memory ...

  9. Emit学习(4) - Dapper解析之数据对象映射(二)

    承接着上一篇, 这一篇主要以堆栈的方式来演示一下, db数据转换到类中去的一个过程. 一.先看第一张图 程序在运行到176行(上一篇贴出的代码)的时候, 就会出现上图中的第一个栈. 那在此之前, Da ...

  10. C语言学习018:strdup复制字符串数组

    在C语言学习005:不能修改的字符串中我们知道字符串是存储在常量区域的,将它赋值给数组实际是将常量区的字符串副本拷贝到栈内存中,如果将这个数组赋值给指针,我们可以改变数组中的元素,就像下面那样 int ...