MediaTooKIT为处理媒体数据提供了一个简单的接口,使得任务如转换、切片和编辑音频和视频完全不费吹灰之力。
在HED下,MediaTooKIT是FFMPEG的.NET包装器;一个免费的(LGPLV2.1)多媒体框架,包含多个音频和视频编解码器,支持多种媒体格式的多兴、解散和转码任务。
Features
- Resolving metadata
- Generating thumbnails from videos
- Transcode audio & video into other formats using parameters such as:
Bit rate
Frame rate
Resolution
Aspect ratio
Seek position
Duration
Sample rate
Media format
- Convert media to physical formats and standards such as:
- Standards include:
FILM
,PAL
&NTSC
- Mediums include:
DVD
,DV
,DV50
,VCD
&SVCD
- Standards include:
- Supports custom FFmpeg command line arguments
- Raising progress events
Get started!
Install MediaToolkit from NuGet using the Package Manager Console with the following command (or search on NuGet MediaToolkit)
PM> Install-Package MediaToolkit
Samples
- Retrieve metadata
- Perform basic video conversions
- [Grab thumbnail] (#grab-thumbnail-from-a-video)
- Convert from FLV to DVD
- Convert FLV to MP4 using various transcoding options
- [Cut / split video] (#cut-video-down-to-smaller-length)
- Subscribing to events
Grab thumbnail from a video
var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"};
var outputFile = new MediaFile {Filename = @"C:\Path\To_Save_Image.jpg"};
using (var engine = new Engine())
{
engine.GetMetadata(inputFile);
// Saves the frame located on the 15th second of the video.
var options = new ConversionOptions { Seek = TimeSpan.FromSeconds(15) };
engine.GetThumbnail(inputFile, outputFile, options);
}
Retrieve metadata
var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"};
using (var engine = new Engine())
{
engine.GetMetadata(inputFile);
}
Console.WriteLine(inputFile.Metadata.Duration);
Basic conversion
var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"};
var outputFile = new MediaFile {Filename = @"C:\Path\To_Save_New_Video.mp4"};
using (var engine = new Engine())
{
engine.Convert(inputFile, outputFile);
}
Convert Flash video to DVD
var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"};
var outputFile = new MediaFile {Filename = @"C:\Path\To_Save_New_DVD.vob"};
var conversionOptions = new ConversionOptions
{
Target = Target.DVD,
TargetStandard = TargetStandard.PAL
};
using (var engine = new Engine())
{
engine.Convert(inputFile, outputFile, conversionOptions);
}
Transcoding options FLV to MP4
var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"};
var outputFile = new MediaFile {Filename = @"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
};
using (var engine = new Engine())
{
engine.Convert(inputFile, outputFile, conversionOptions);
}
Cut video down to smaller length
var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"};
var outputFile = new MediaFile {Filename = @"C:\Path\To_Save_ExtractedVideo.flv"};
using (var engine = new Engine())
{
engine.GetMetadata(inputFile);
var options = new ConversionOptions();
// This example will create a 25 second video, starting from the
// 30th second of the original video.
First parameter requests the starting frame to cut the media from.
Second parameter requests how long to cut the video.
options.CutMedia(TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(25));
engine.Convert(inputFile, outputFile, options);
}
Subscribe to events
public void StartConverting()
{
var inputFile = new MediaFile {Filename = @"C:\Path\To_Video.flv"};
var outputFile = new MediaFile {Filename = @"C:\Path\To_Save_New_Video.mp4"};
using (var engine = new Engine())
{
engine.ConvertProgressEvent += ConvertProgressEvent;
engine.ConversionCompleteEvent += engine_ConversionCompleteEvent;
engine.Convert(inputFile, outputFile);
}
}
private void ConvertProgressEvent(object sender, ConvertProgressEventArgs e)
{
Console.WriteLine("\n------------\nConverting...\n------------");
Console.WriteLine("Bitrate: {0}", e.Bitrate);
Console.WriteLine("Fps: {0}", e.Fps);
Console.WriteLine("Frame: {0}", e.Frame);
Console.WriteLine("ProcessedDuration: {0}", e.ProcessedDuration);
Console.WriteLine("SizeKb: {0}", e.SizeKb);
Console.WriteLine("TotalDuration: {0}\n", e.TotalDuration);
}
private void engine_ConversionCompleteEvent(object sender, ConversionCompleteEventArgs e)
{
Console.WriteLine("\n------------\nConversion complete!\n------------");
Console.WriteLine("Bitrate: {0}", e.Bitrate);
Console.WriteLine("Fps: {0}", e.Fps);
Console.WriteLine("Frame: {0}", e.Frame);
Console.WriteLine("ProcessedDuration: {0}", e.ProcessedDuration);
Console.WriteLine("SizeKb: {0}", e.SizeKb);
Console.WriteLine("TotalDuration: {0}\n", e.TotalDuration);
}
下载地址:https://github.com/AydinAdn/MediaToolkit#samples