产品文档 / Excel催化剂
第37波-音视频文件元数据提取(分辨率,时长,采样率等)
上一篇提到图片元信息Exif的提取,当然还有一类音视频文件,也同样存储着许多宝贵的元数据,那就开源到底呗,虽然自己找寻过程也是蛮艰辛坎坷的,大家看后有收获,只求多多传播下,让前人的工作可以更有价值。 此篇对应的Excel催化剂功能实现:第83波 遍历文件夹内文件信息特别是图像、音视频等特有信息 ..
上一篇提到图片元信息Exif的提取,当然还有一类音视频文件,也同样存储着许多宝贵的元数据,那就开源到底呗,虽然自己找寻过程也是蛮艰辛坎坷的,大家看后有收获,只求多多传播下,让前人的工作可以更有价值。
此篇对应的Excel催化剂功能实现:第83波-遍历文件夹内文件信息特别是图像、音视频等特有信息
../功能介绍(按波段)/第83波-遍历文件夹内文件信息特别是图像、音视频等特有信息.md
音视频元数据的提取,用到了MediaToolkit类库,较其他复杂的方案来说,这个对我这种业余开发者最友好,最后很幸运地相遇了它。

直接上代码,同样只需三两行代码就可以拿到核心信息。
private void AddMediaInfo(DataRow dr, string filePath)
{
try
{
using (var engine = new Engine())
{
var inputFile = new MediaToolkit.Model.MediaFile { Filename = filePath };
engine.GetMetadata(inputFile);
var videoData = inputFile.Metadata.VideoData;
var audioData = inputFile.Metadata.AudioData;
dr[ColNameOfVideoDuration] = Math.Round(inputFile.Metadata.Duration.TotalSeconds / 60.0, 2);
if (videoData != null)
{
dr[ColNameOfVideoFormat] = videoData.Format;
string sizeStr = videoData.FrameSize;
dr[ColNameOfVideoWidth] = sizeStr.Split('x')[0];
dr[ColNameOfVideoHeight] = sizeStr.Split('x')[1];
}
if (audioData != null)
{
dr[ColNameOfAudioFormat] = audioData.Format;
dr[ColNameOfAudioBitRateKbs] = audioData.BitRateKbs;
dr[ColNameOfAudioSampleRate] = audioData.SampleRate;
}
}
}
catch (Exception)
{
}
}