如何在C# 中使用 FFmpeg.NET

 更新时间:2021年03月11日 09:18:29   作者:hellodev  
这篇文章主要介绍了如何在C# 中使用 FFmpeg.NET,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下

FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用 LGPL 或 GPL 许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库 libavcodec,为了保证高可移植性和编解码质量,libavcodec 里很多 code 都是从头开发的。

这篇文章主要介绍如何在 C# 中使用 FFmpeg。

在项目中使用包管理器控制台安装 nuget 包:

PM> Install-Package xFFmpeg.NET

1、从视频中抓取缩略图

var inputFile = new MediaFile (@"C:\Path\To_Video.flv");
var outputFile = new MediaFile (@"C:\Path\To_Save_Image.jpg");
 
var ffmpeg = new Engine("C:\\ffmpeg\\ffmpeg.exe");
// 保存位于视频第 15 秒的帧。
var options = new ConversionOptions { Seek = TimeSpan.FromSeconds(15) };
await ffmpeg.GetThumbnailAsync(inputFile, outputFile, options);

2、获取视频元数据

var inputFile = new MediaFile (@"C:\Path\To_Video.flv");
 
var ffmpeg = new Engine("C:\\ffmpeg\\ffmpeg.exe");
var metadata = await ffmpeg.GetMetadataAsync(inputFile);
 
Console.WriteLine(metadata.Duration);

3、基本转换

var inputFile = new MediaFile (@"C:\Path\To_Video.flv");
var outputFile = new MediaFile (@"C:\Path\To_Save_New_Video.mp4");
 
var ffmpeg = new Engine("C:\\ffmpeg\\ffmpeg.exe");
await ffmpeg.ConvertAsync(inputFile, outputFile);

4、将 Flash 视频转换为 DVD

var inputFile = new MediaFile (@"C:\Path\To_Video.flv");
var outputFile = new MediaFile (@"C:\Path\To_Save_New_DVD.vob");
 
var conversionOptions = new ConversionOptions
{
    Target = Target.DVD,
    TargetStandard = TargetStandard.PAL
};
 
var ffmpeg = new Engine("C:\\ffmpeg\\ffmpeg.exe");
await ffmpeg.ConvertAsync(inputFile, outputFile, conversionOptions);

5、将 FLV 转换为 MP4

var inputFile = new MediaFile (@"C:\Path\To_Video.flv");
var outputFile = new MediaFile (@"C:\Path\To_Save_New_Video.mp4");
 
var conversionOptions = new ConversionOptions
{
    MaxVideoDuration = TimeSpan.FromSeconds(30),
    VideoAspectRatio = VideoAspectRatio.R16_9,
    VideoSize = VideoSize.Hd1080,
    AudioSampleRate = AudioSampleRate.Hz44100
};
 
var ffmpeg = new Engine("C:\\ffmpeg\\ffmpeg.exe");
await ffmpeg.ConvertAsync(inputFile, outputFile, conversionOptions);

6、截取视频

var inputFile = new MediaFile (@"C:\Path\To_Video.flv");
var outputFile = new MediaFile (@"C:\Path\To_Save_ExtractedVideo.flv");
 
var ffmpeg = new Engine("C:\\ffmpeg\\ffmpeg.exe");
var options = new ConversionOptions();
 
options.CutMedia(TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(25));
await ffmpeg.ConvertAsync(inputFile, outputFile, options);

以上就是 FFmpeg.NET 类库才常用操作。

项目地址:https://github.com/cmxl/FFmpeg.NET

以上就是如何在C# 中使用 FFmpeg.NET的详细内容,更多关于C# 使用FFmpeg.NET的资料请关注脚本之家其它相关文章!

相关文章

  • 基于WPF实现数字框控件

    基于WPF实现数字框控件

    这篇文章主要介绍了如何利用WPF实现数字框控件,文中的示例代码讲解详细,对我们学习或工作有一定的帮助,需要的小伙伴可以参考一下
    2023-08-08
  • Unity 实现框选游戏战斗单位的思路详解

    Unity 实现框选游戏战斗单位的思路详解

    这篇文章主要介绍了Unity 如何实现框选游戏战斗单位,本文简单介绍如何实现即时战略游戏中框选战斗单位的功能,需要的朋友可以参考下
    2022-12-12
  • 使用C#编写自己的区块链挖矿算法

    使用C#编写自己的区块链挖矿算法

    这篇文章主要介绍了使用C#编写自己的区块链挖矿算法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 使用C#创建Windows服务的实例代码

    使用C#创建Windows服务的实例代码

    这篇文章主要介绍了使用C#创建Windows服务的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • ListView用法中与滚动相关的需求实现

    ListView用法中与滚动相关的需求实现

    这篇文章主要介绍了ListView用法中与滚动相关的需求实现,获取并设置ListView的滚动位置,以及获取滚动位置处的项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Unity脚本自动添加头部注释的全过程

    Unity脚本自动添加头部注释的全过程

    在一些公司需要代码严格的管理,有时候会需要用到每个脚本的头部做一些介绍,所以下面这篇文章主要给大家介绍了关于Unity脚本自动添加头部注释的相关资料,需要的朋友可以参考下
    2022-01-01
  • C#利用RabbitMQ实现点对点消息传输

    C#利用RabbitMQ实现点对点消息传输

    RabbitMQ做为消息代理,负责接收和转发消息,可以将RabbitMQ比喻为一个邮筒、一个邮局和一个邮递员。本文主要以一个简单的小例子,简述RabbitMQ实现消息传输的相关内容,仅供学习分享使用,如有不足之处,还请指正。
    2021-05-05
  • C#通过指针实现快速拷贝的方法

    C#通过指针实现快速拷贝的方法

    这篇文章主要介绍了C#通过指针实现快速拷贝的方法,涉及C#指针的相关使用技巧,需要的朋友可以参考下
    2015-06-06
  • C# XML基础入门小结(XML文件内容增删改查清)

    C# XML基础入门小结(XML文件内容增删改查清)

    本文主要介绍了C# XML基础入门小结(XML文件内容增删改查清),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • C#学习笔记之字符串常用方法

    C#学习笔记之字符串常用方法

    在C#中字符串是用于表示文本的一系列字符,它可以是字符、单词 或用双引号引起来的长段落,下面这篇文章主要给大家介绍了关于C#学习笔记之字符串常用方法的相关资料,需要的朋友可以参考下
    2024-01-01

最新评论