c# 用ffmpeg从视频中截图

概述

之前做了个项目,涉及到上传视频,那么我们知道,一般在界面显示的时候,是需要对视频有个预览的效果,就是显示某一帧视频的画面。

找了下发现http://ffmpeg.org/ 可以实现这个功能。

FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。

主要参数

  • -i——设置输入档名。
  • -f——设置输出格式。
  • -y——若输出文件已存在时则覆盖文件。
  • -fs——超过指定的文件大小时则结束转换。
  • -t——指定输出文件的持续时间,以秒为单位。
  • -ss——从指定时间开始转换,以秒为单位。
  • -t从-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
  • -title——设置标题。
  • -timestamp——设置时间戳。
  • -vsync——增减Frame使影音同步。
  • -c——指定输出文件的编码。
  • -metadata——更改输出文件的元数据。
  • -help——查看帮助信息。

ffmpeg的官网地址是:https://www.ffmpeg.org/

ffmpeg的Github项目地址是:https://github.com/FFmpeg/FFmpeg

下面我们来看下ffmpeg如何实现视频截图的操作。

实现方式

1、下载 ffmpeg http://ffmpeg.org/ ,解压后在 bin 目录下找到 ffmpeg.exe

2、命令方式

-i 视频地址 -ss 第几帧 -f image2 图片存放地址

用cmd试一下,首先切换到ffmpeg.exe所在目录,输入命令,回车

3、c#代码实现

using (System.Diagnostics.Process process = new System.Diagnostics.Process()){
 process.StartInfo.FileName = @"D:\ffmpeg.exe";
 process.StartInfo.Arguments= @"-i D:\111.mp4 -ss 10 -f image2 D:\test\1.jpg";
 process.Start();}

或者如下

using System.Diagnostics;
.....

   ProcessStartInfo startInfo = new ProcessStartInfo("ffmpeg物理路径");

   startInfo.WindowStyle = ProcessWindowStyle.Hidden;

   startInfo.Arguments = " -i 视频文件路径 -y -f image2 -ss 3 -t 0.001 -s 480*360 截图物理路径";//480*360是图片分辨率

   startInfo.UseShellExecute = false;

   try

   {

    Process.Start(startInfo);

    return true;

   }

   catch

   {

   }

以上就是c# 用ffmpeg从视频中截图的详细内容,更多关于c# 从视频中截图的资料请关注我们其它相关文章!

(0)

相关推荐

  • c# 使用WebRequest实现多文件上传

    c#中通常使用HttpWebRequest进行HTTP网络请求,HttpWebRequest只对Http请求进行了最简单的封装.如果要利用Http协议实现多文件上传,则必须使用POST方法multipart/form-data格式.为了重复使用,我封装了几个方法,实现了多参数文件上传. 添加引用 使用WebRequest需要添加引用System.Web,否则引入出错. 参数封装 方便起见,我把请求参数进行了封装,代码如下: namespace EasyHttp.Net.Core { public

  • c# 如何实现自动更新程序

    主要功能介绍 实现文件的自动更新.主要功能: 支持整包完全更新,即客户端只需输入一个服务器地址,即可下载所有文件. 支持增量更新,即只更新指定的某几个文件. 支持自动更新程序的更新 更新界面如图: 客户端 main方法入口 /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { //在主程序中 更新替换自动升级程序 //ReplaceAutoUpgrade(); bool isEnte

  • C# 文件安全管理需要注意的

    在实际的项目开发中,我们经常需要使用到文件的I/O操作,主要包含对文件的增改删查等操作,这些基本的操作我们都是很熟悉,但是较少的人去考虑文件的安全和操作的管理等方面,例如文件的访问权限管理,文件数据的彻底删除和数据的恢复等等,这一系列的操作需要我们对.NET的相关知识有一个深刻的学习. 在本文章主要介绍文件和目录的一些基本操作,以及文件目录的权限和安全设置的相关内容. 一.DotNet文件目录常用操作: 提到文件的I/O操作,这个对于每一个开发者来说都不是陌生的事,因为这些操作是我们在项目开发过

  • C# Winform 实现TCP发消息

    服务端: 窗体 代码: using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Windows.Forms;   namespace SocketStudy {     public partial class Form1 :

  • c# WPF中的TreeView使用详解

    在wpf中实现treeview的功能,可能看到很多分享的都是简单的绑定,仅此记录自己完成的功能. 前台 <TreeView x:Name="chapterTree" Grid.Column="0" SelectedItemChanged="chapterTree_SelectedItemChanged" PreviewMouseRightButtonDown="chapterTree_PreviewMouseRightButton

  • 使用 BenchmarkDotNet 对 C# 代码进行基准测试

    BenchmarkDotNet 是一个轻量级,开源的,强大的 .NET 工具包,它可以将你的方法转化为基准并跟踪这些方法,最后对这些方法的性能提供一些测试报告,使用 BenchmarkDotNet 玩 基准测试 是非常容易的. 你可以利用 BenchmarkDotNet 在 .NET Framework 和 .NET Core 应用程序上实现基准测试,在这篇文章中,我们将会讨论如何在 .NET Core 中实现基准测试. 安装 BenchmarkDotNet 要想使用 BenchmarkDotN

  • c# 圆形识别方案和直线识别方案的参考示例

    圆形识别方案 识别流程 判断是否为封闭图形: 根据圆的方程,取输入点集中的1/6.3/6.5/6处的三个点,求得圆的方程,获取圆心及半径: 取点集中的部分点,计算点到圆心的距离与半径的比例,与设定的阈值比较,得出结果.~~~~ 实现 public static bool IsCircle(List<Point> points, out Point center, out double radius) { int len = points.Count; center = new Point();

  • c# wpf如何使用Blend工具绘制Control样式

    本文通过设计一个RadioButton,分享下使用Blend绘制Path的方法.待绘制的RadioButton样式如下文所示,如有更好的方法实现该样式,欢迎交流. 实现效果 将要实现的RadioButton样式如下图,可以看出按钮的笔尖和笔身的填充色,以及选中时右上方圆形的填充色一致,代表笔的颜色. 实现方式 笔身使用矩形,填充色绑定按钮背景色:笔头部分使用闭合的Path,其中笔尖的颜色同样绑定按钮背景色:右上方的圆形使用Ellipse,填充色同样绑定按钮背景色. 实现步骤 1.打开Blend,

  • c# 如何自己实现一个ORM框架

    0. 前言 在之前的几篇内容中,我们了解了如何通过ADO.NET 访问数据库,如何修改.新增数据.如何通过DataSet和DataAdapter获取数据,我们将在这一篇试试自己实现一个简单的ORM框架或者说ORM工具类. 涉及到的知识点: 反射(初级) ADO.NET 已有知识 1. ORM 那么,问题来了,什么是ORM?ORM全称 Object Relational Mapping,翻译过来就是对象关系映射.是一种通过描述对象与数据库之间映射关系的数据,将对象保存到数据库中的技术. 在C#中,

  • C# 如何实现Token

    什么是JWT JWT:Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景.JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密. 传统的session认证 我们知道,http协议本身是一种无状态的协

  • c# 如何对网络信息进行相关设置(ip,dns,网关等)

    网络的相关设置在项目开发中有较多的应用,有时候需要在项目中对网络信息进行相关设置. 现在提供提供几种相关的辅助方法类. (1).IP地址 /// <summary> /// IP地址 /// </summary> public string IpAddress { get { string ipAddress; var address = GetAddress(); if (address == null) { ipAddress = string.Empty; } else {

  • c# 在windows中操作IIS设置FTP服务器的示例

    什么是FTP FTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.可以将 Internet 信息服务 (IIS) 配置为作为 FTP 服务器来运行. 这样,其他计算机便可以连接到服务器并将文件复制到服务器或者从服务器复制文件. 例如,如果您在自己的计算机上承载网站,并且希望允许远程用户连接到您的计算机并将他们的文件复制到服务器,则可以将 IIS 配置为充当 FTP 服务器. 主要实现方式 下面主要讲解一下,在Window的I

随机推荐