MediaToolkit:.NET 开发者的多媒体处理工具

在开发过程中处理音频和视频文件是许多应用程序的重要功能。MediaToolkit 是一个强大的 .NET 库,帮助开轻松处理这些多媒体文件。封装了 FFmpeg 的功能,使得复杂的任务变得简单。支持更多功能,如视频裁剪、缩略图提取和转码等。

安装

第一步,老规矩,先安装

PM> Install-Package MediaToolkit

二、MediaToolkit 的主要功能

1. 解析媒体元数据

MediaToolkit 可以解析媒体文件的元数据,例如视频的时长、分辨率和帧率,以及音频的采样率等。

var inputFile = new MediaFile { Filename = @"Video.flv" };

using (var engine = new Engine())
{
engine.GetMetadata(inputFile);
} Console.WriteLine($"Duration: {inputFile.Metadata.Duration}");
Console.WriteLine($"Resolution: {inputFile.Metadata.VideoData?.Resolution}");

输出:Net分享

Duration: 00:00:24.9300000

Video 格式: yuv420p(tv, bt709)

Video 颜色模型: h264 (Main) (avc1 / 0x31637661)

Video 帧的尺寸: 1920x1080

Video BitRateKbs : 5989

Video FPS : 30

2. 生成视频缩略图

从视频中提取缩略图是常见的需求。MediaToolkit 提供了简单的方法来实现这一功能。

var inputFile = new MediaFile { Filename = @"Video.flv" };
var outputFile = new MediaFile { Filename = @"Save_Image.jpg" }; using (var engine = new Engine())
{
var options = new ConversionOptions { Seek = TimeSpan.FromSeconds(15) };
engine.GetThumbnail(inputFile, outputFile, options);
}

3. 音频和视频转码

MediaToolkit 支持将音频和视频文件转换为其他格式,并允许设置比特率、帧率、分辨率等参数。

var inputFile = new MediaFile { Filename = @"VideoVideo.flv" };
var outputFile = new MediaFile { Filename = @"VideoTo_Save_New_Video.mp4" }; var conversionOptions = new ConversionOptions
{
MaxVideoDuration = TimeSpan.FromSeconds(30),
VideoAspectRatio = VideoAspectRatio.R16_9,
VideoSize = VideoSize.Hd1080,
AudioSampleRate = AudioSampleRate.Hz44100
}; using (var engine = new Engine())
{
engine.Convert(inputFile, outputFile, conversionOptions);
}

4. 转换为物理格式

MediaToolkit 支持将媒体文件转换为特定的物理格式,如 DVD、DV、VCD 等。

var inputFile = new MediaFile { Filename = @"Video.flv" };
var outputFile = new MediaFile { Filename = @"Save_New_DVD.vob" }; var conversionOptions = new ConversionOptions
{
Target = Target.DVD,
TargetStandard = TargetStandard.PAL
}; using (var engine = new Engine())
{
engine.Convert(inputFile, outputFile, conversionOptions);
}

5. 视频裁剪和分割

MediaToolkit 允许对视频进行裁剪和分割,提取特定部分。

var inputFile = new MediaFile { Filename = @"Video.flv" };
var outputFile = new MediaFile { Filename = @"Save_ExtractedVideo.flv" }; using (var engine = new Engine())
{
var options = new ConversionOptions();
options.CutMedia(TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(25));
engine.Convert(inputFile, outputFile, options);
}

6. 自定义 FFmpeg 命令

MediaToolkit 支持执行自定义的 FFmpeg 命令行参数,满足特殊需求。

7. 订阅事件

MediaToolkit 提供了事件订阅机制,开发者可以实时获取转换进度和完成信息。

public void StartConverting()
{
var inputFile = new MediaFile { Filename = @"VideoVideo.flv" };
var outputFile = new MediaFile { Filename = @"To_Save_New_Video.mp4" }; using (var engine = new Engine())
{
engine.ConvertProgressEvent += ConvertProgressEvent;
engine.ConversionCompleteEvent += ConversionCompleteEvent;
engine.Convert(inputFile, outputFile);
}
} private void ConvertProgressEvent(object sender, ConvertProgressEventArgs e)
{
Console.WriteLine($"Converting... Frame: {e.Frame}, Duration: {e.ProcessedDuration}");
} private void ConversionCompleteEvent(object sender, ConversionCompleteEventArgs e)
{
Console.WriteLine("Conversion complete!");
}

项目地址

https://github.com/MediaToolkit/MediaToolkit

五、总结

MediaToolkit 是一个功能强大且易于使用的 .NET 多媒体处理库。它封装了 FFmpeg 的功能,简化了复杂的多媒体任务。无论是在桌面、Web 还是移动应用程序中,MediaToolkit 都可以帮助开发者高效处理音频和视频文件。

MediaToolkit:.NET 开发者的多媒体处理工具的更多相关文章

  1. 推荐几个对Asp.Net开发者比较实用的工具 2

    推荐几个对Asp.Net开发者比较实用的工具.大家有相关工具也可以在评论区留言,一起努力学习. 作为程序员要有挑战精神,大家可以尝试一下这些工具. 已经有篇文章写到了vs的扩展工具,这里不再累赘,请查 ...

  2. 推荐几个对Asp.Net开发者比较实用的工具

    推荐几个对Asp.Net开发者比较实用的工具.大家有相关工具也可以在评论区留言,一起努力学习. 工具 1.Visual stdio Productivity Power tool:visual std ...

  3. Android开发者不可或缺的四大工具

    Android开发者不可或缺的四大工具 android以其极强的开放性吸引着世界各地的开发者去开发各种各样的移动应用开发,而各种SDK更是为各个层次的开发者提供了一个可以尽情展示他们专业技能和创造性的 ...

  4. 23个适合Java开发者的大数据工具和框架

    转自:https://www.yidianzixun.com/article/0Ff4gqZQ?s=9&appid=yidian&ver=3.8.4&utk=6n9c2z37 ...

  5. [转]PHP开发者必须了解的工具—Composer

    本文转自:https://blog.csdn.net/Zhihua_W/article/details/80345973 Composer是PHP 用来管理依赖(dependency)关系的工具.你可 ...

  6. 解放开发者!3款工具实现快速K8S开发

    本文转自Rancher Labs 关注我们,即可第一时间获取K8S教程哦 简 介 时至今日,Kubernetes正在变得越来越重要,不仅仅是运维需要Kubernetes,在开发的世界里Kubernet ...

  7. GUI开发者桌面搜索文件工具

    # - *- coding:utf-8-*-from Tkinter import *import tkMessageBoximport tkFileDialogimport osimport fnm ...

  8. 八款Android 开发者必备的小工具

    Photo from https://www.airpair.com 在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大 ...

  9. iOS 开发者必知的 75 个工具(译文)

    原文地址:http://benscheirman.com/2013/08/the-ios-developers-toolbelt (需FQ)   如果你去到一位熟练的木匠的工作室,你总是能发现他/她有 ...

  10. iOS 开发者必不可少的 75 个工具,你都会了吗

    如果你去到一位熟练的木匠的工作室,你总是能发现他/她有一堆工具来完成不同的任务. 软件开发同样如此.你可以从软件开发者如何使用工具中看出他水准如何.有经验的开发者精于使用工具.对你目前所使用的工具不断 ...

随机推荐

  1. DOM元素高度获取踩坑

    前情 最近在开发一个需求,需要做一个滚动列表展示当前中奖用户,但是列表每一项高度又不是固定的,每次滚动前需要先获取当前要滚动的块是多高才知道要滚动多少. 坑位 在开发这个滚动列表的时候发现滚着滚着就会 ...

  2. OS之《机械硬盘》

    数据的组织 一个磁盘设备 ---->多个物理盘片 一个物理盘片---->正反两面存储面 一个存储面---->多个磁道(每个磁道上存储容量时一样的,可存储相同数目的二进制位),所以,内 ...

  3. 【字符串哈希+二分】AcWing3508 最长公共子串

    题解 首先思考暴力枚举长度为 \(len∈[1, min(strlen(s), strlen(t))]\),最差情况下为字符串 \(s\) 和字符串 \(t\) 全为长度为 \(10000\) 的全英 ...

  4. 双语对照的 PDF 翻译工具「GitHub 热点速览」

    在 OpenAI 举办的「12天12场」发布会上,ChatGPT 的多项新功能正式亮相,包括 GPT-o1 正式版和 ChatGPT Pro(200 美元/月).强化微调(Reinforcement ...

  5. Excel VLOOKUP 函数入门教程

    一.引言 在日常工作中,Excel 是处理数据的强大工具之一,而 VLOOKUP 函数作为 Excel 中最常用的查找函数之一,能够帮助用户在表格或数值数组中快速定位并返回所需的数据.它的工作原理是在 ...

  6. maven 太垃圾

    Java mon amour: Maven sucks like hell http://www.javamonamour.org/2010/08/maven-tricks.html 搜 why ma ...

  7. 在docker中使用主机串口通讯

    在进行软件docker化的过程时,很大的一个阻碍就是软件与各种外围硬件设备的交互,网口通信的设备能够很容易地接入容器,但是串口设备则要复杂一些.本文讨论在windows和linux下docker容器使 ...

  8. Qt编写的项目作品33-斗图神器(雨田哥作品)

    一.功能特点 支持HTTP,HTTPS网络表情图片下载,本地缓存. 采用MV模式,支持大量图片表情预览查看. 采用多线程异步下载图片刷新. 图片搜索功能(因网络提供API无信息字段提供,占搜索不了.但 ...

  9. 如何使用图片的exif信息计算相机焦距

    135胶卷源于35mm高度的打孔电影胶片,1913年,德国人奥斯卡·巴纳克将其用于他发明的徕卡(Leica)牌小型照相机上,由此形成标准.35mm电影胶卷,35mm指的是胶卷的高度为35mm,由于上下 ...

  10. ofd轻阅读超大文件优化方案

    本人使用Typescript开发了一款ofd 阅读器,参见文章<ofd轻阅读>.web端实现阅读功能有两种方案: ofd转svg:使用h5 canvas. 两种方案各有优劣,本人采用了ca ...