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. R数据分析:净重新分类(NRI)和综合判别改善(IDI)指数的理解

    对于分类预测模型的表现评估我们最常见的指标就是ROC曲线,报告AUC.比如有两个模型,我们去比较下两个模型AUC的大小,进而得出两个模型表现的优劣.这个是我们常规的做法,如果我们的研究关注点放在&qu ...

  2. 探索使用 ViewContainerRef 的 Angular DOM 操控技术

    探索使用 ViewContainerRef 的 Angular DOM 操控技术 https://indepth.dev/posts/1052/exploring-angular-dom-manipu ...

  3. 【XML】Java创建XML文档

    package example01; import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.xml.parsers ...

  4. 【Javaweb】【Maven】Use IDEA and Maven create a Java Web Application 

    Open This Url :https://mvnrepository.com/ Search Servlet Select the latest version Copy it! Paste An ...

  5. kubeadm卸载清空k8s环境

    #!/bin/bash kubeadm reset -f modprobe -r ipip lsmod rm -rf ~/.kube/ rm -rf /etc/kubernetes/ rm -rf / ...

  6. Spring boot 2.0 之优雅停机

    spring boot 框架在生产环境使用的有一段时间了,它"约定大于配置"的特性,体现了优雅流畅的开发过程,它的部署启动方式(java -jar xxx.jar)也很优雅.但是我 ...

  7. Qt数据库应用14-超级自定义委托

    一.前言 在QTableView.QTreeView以及对于衍生的QTableWidget.QTreeWidget类中,需要用到自定义委托的情形很多,比如提供下拉框选择,进度条展示下载进度啥的,默认的 ...

  8. Qt编写安防视频监控系统68-兼容Qt4到Qt6

    一.前言 为了从Qt4.7兼容到Qt6.2及后续版本,着实花了不少精力,前提也是对自定义控件大全和各种跨平台的轮子组件全部做成了兼容Qt4到Qt6,这样只剩下UI这块需要兼容就好办多了,各个击破战略, ...

  9. CentOS安装tigerVNC Server

  10. 史上最通俗Netty入门长文:基本介绍、环境搭建、动手实战

    原作者江成军,原题"还在被Java NIO虐?该试试Netty了",收录时有修订和改动. 1.阅读对象 本文适合对Netty一无所知的Java NIO网络编程新手阅读,为了做到这一 ...