我无法找到如何以编程方式获取文件的视频长度的简单示例.许多人说,哦,使用这个图书馆/包装或什么,但不要说如何.我已经下载了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;