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

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

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

安装

第一步,老规矩,先安装

PM> Install-Package MediaToolkit

主要功能

1. 解析媒体元数据

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

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

using (var engine = new Engine())
{
    engine.GetMetadata(inputFile);
}

// 输出视频的基本信息
Console.WriteLine($"Duration: {file.Metadata.Duration}");
Console.WriteLine($"Video 格式: {file.Metadata.VideoData.ColorModel}");
Console.WriteLine($"Video 颜色模型: {file.Metadata.VideoData.Format}");
//表示帧的尺寸,可能是像素大小,例如 "1920x1080",通常用于表示视频的分辨率
Console.WriteLine($"Video 帧的尺寸: {file.Metadata.VideoData.FrameSize}");
//表示比特率,单位为 Kbps(千比特每秒)。
//一个可为空的整数(int?),表示可以没有设置该值,适用于某些不强制要求比特率的情况下。
Console.WriteLine($"Video BitRateKbs : {file.Metadata.VideoData.BitRateKbs}");
//表示每秒帧数(Frames Per Second,FPS),通常用于视频流的播放速率,例如 30.0 表示每秒播放 30 帧
Console.WriteLine($"Video FPS : {file.Metadata.VideoData.Fps}");

输出:Net分享
Duration: 00:00:24.9300000
Video 格式: yuv420p(tv, bt709)
Video 颜色模型: h264 (Main) (avc1 / 0x31637661)
Video 帧的尺寸: 1920x1080
Video BitRateKbs : 5989
Video FPS : 30

2. 生成视频缩略图

从视频中提取缩略图

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);
}

Net分享

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. 视频裁剪和分割

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

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/AydinAdn/MediaToolkit

总结

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

posted on   漫思  阅读(4)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2022-02-26 Windows2012R2配置SQLSERVER2012集群Alwayson配置高可用性
2022-02-26 【H5】十款构建 React.js 应用程序的UI框架
2022-02-26 Sql Server2008-读写分离
2022-02-26 Aforge.net之旅——开篇:从识别验证码开始
2022-02-26 AForge.NET
2022-02-26 移动端网页特效
2022-02-26 PC 端网页特效

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示