首页 > 编程语言 >如何在C# 中使用 FFmpeg.NET

如何在C# 中使用 FFmpeg.NET

时间:2023-01-01 10:02:41浏览次数:71  
标签:FFmpeg C# MediaFile Path var new NET inputFile ffmpeg


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​

标签:FFmpeg,C#,MediaFile,Path,var,new,NET,inputFile,ffmpeg
From: https://blog.51cto.com/biyusr/5982741

相关文章

  • 基于OpenCV的图像梯度与边缘检测!
     Datawhale干货 作者:姚童,Datawhale优秀学习者,华北电力大学严格的说,梯度计算需要求导数。但是图像梯度的计算,是通过计算像素值的差得到梯度的近似值。图像梯度表示的是图像......
  • NLP入门必知必会(一):Word Vectors
     Datawhale干货 作者:芦冬生,Datawhale优秀学习者,北京理工大学自然语言处理(NLP)是信息时代最重要的技术之一,也是人工智能的重要组成部分。NLP的应用无处不在,因为人们几乎......
  • 基于OpenCV的图像分割处理!
     Datawhale干货 作者:姚童,Datawhale优秀学习者,华北电力大学图像阈值化分割是一种传统的最常用的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和......
  • nohup Command [ Arg … ] [ & ]
    nohup英文全称:nohangup不挂断的意思。退出终端不挂断程序的运行。在默认的情况下,会输出一个名叫nohup.out的文件到当前目录下。nohupCommand[Arg…][&]......
  • C++11:引用限定符
    C++中有左值和右值的概念。其实,左值和右值的区分也同样适用于类对象,本文中将左值的类对象称为左值对象,将右值的类对象称为右值对象。1.C++11:引用限定符默认情况下,对于......
  • 空文档创建MFC(类似记事本)
     1.创建工程 2.添加项目         3.执行               ......
  • IfcOwnerHistory
    IfcOwnerHistory实体定义IfcOwnerHistory定义所有历史和标识相关信息。为了提供快速访问,它直接连接到所有独立的对象、关系和属性。 IfcOwnerHistory用于标识创建和拥......
  • wpf Blazor Hybrid .net7 程序 无法在 win7 中运行故障一例.
    首先win7要满足以下条件https://www.cnblogs.com/densen2014/p/16954059.html然后检查程序目录中是否存在一个名为 [程序名称].staticwebassets.runtime.json 的文件.......
  • sql server连接的基本使用(包含自身验证和连接Navicat)
    自身验证的步骤1、先默认使用Windows身份验证连接上SQLServer数据库2、右键连接名称,选择属性来到这个界面:3、选中左侧的安全性4、将服务器身份验证修改为SQLServ......
  • leetcode-575. 分糖果
    575.分糖果-力扣(Leetcode)信息:糖果的种类总个数吃一半分析:种类大于一半,那么只能吃一半种类小于一半,那么是种类量考哈希表,有点简单,熟悉Go语法还行funcdistr......