您的位置:首页 > 编程语言 > C#

C# 如何知道一个影像文件能够播放多长时间

2012-06-21 14:41 369 查看
分享给你一段代码吧


using DirectShowLib;

using DirectShowLib.DES;

using System.Runtime.InteropServices;

var mediaDet = (IMediaDet)new MediaDet();

DsError.ThrowExceptionForHR(mediaDet.put_Filename(FileName));

// find the video stream in the file

int index;

var type = Guid.Empty;

for (index = 0; index < 1000 && type != MediaType.Video; index++)

{

mediaDet.put_CurrentStream(index);

mediaDet.get_StreamType(out type);

}

// retrieve some measurements from the video

double frameRate;

mediaDet.get_FrameRate(out frameRate);

var mediaType = new AMMediaType();

mediaDet.get_StreamMediaType(mediaType);

var videoInfo = (VideoInfoHeader)Marshal.PtrToStructure(mediaType.formatPtr, typeof(VideoInfoHeader));

DsUtils.FreeAMMediaType(mediaType);

var width = videoInfo.BmiHeader.Width;

var height = videoInfo.BmiHeader.Height;

double mediaLength;

mediaDet.get_StreamLength(out mediaLength);

var frameCount = (int)(frameRate * mediaLength);

var duration = frameCount / frameRate;


更为简单的方式是调用ffmpeg, ffmpeg -i一下,需要什么信息,解析一下输出内容就好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐