c# – 获取视频长度
发布时间:2020-12-15 17:40:48 所属栏目:百科 来源:网络整理
导读:我无法找到如何以编程方式获取文件的视频长度的简单示例.许多人说,哦,使用这个图书馆/包装或什么,但不要说如何.我已经下载了ffmpeg,但没有线索如何实际使用它,似乎没有任何示例如何使用它来获得视频的持续时间.我看到如何使用它来转换视频,但我只想知道视频
我无法找到如何以编程方式获取文件的视频长度的简单示例.许多人说,哦,使用这个图书馆/包装或什么,但不要说如何.我已经下载了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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |