c# – 获取视频长度

前端之家收集整理的这篇文章主要介绍了c# – 获取视频长度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法找到如何以编程方式获取文件的视频长度的简单示例.许多人说,哦,使用这个图书馆/包装或什么,但不要说如何.我已经下载了ffmpeg,但没有线索如何实际使用它,似乎没有任何示例如何使用它来获得视频的持续时间.我看到如何使用它来转换视频,但我只想知道视频的持续时间.所有其他信息并不重要.

有没有办法这样做,无论是在C#,python,java,无论如何,只会返回一个字符串,指示视频文件的长度.

请尽可能提供示例.提前致谢!

假设标准文件格式,如wmv,avi,mp4,mpeg.具有元数据的东西.

解决方法

这是一个例子:
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;

猜你在找的C#相关文章