C# 如何知道一个影像文件能够播放多长时间
2012-06-21 14:41
369 查看
分享给你一段代码吧
更为简单的方式是调用ffmpeg, ffmpeg -i一下,需要什么信息,解析一下输出内容就好了。
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一下,需要什么信息,解析一下输出内容就好了。
相关文章推荐
- 在C#中如何确定一个文件是不是文本文件,以及如何确定一个文件的类型
- 客服小妹是如何泡到手的——C#定时提醒·语音录制·语音播放·文件转录Demo源码——倾情奉献!
- 一个可序列化的C#对象,如何转成一个XML格式的文件或字符串【转】
- C# 如何创建一个xml文件?并写入指定内容?
- [译]Android音频: 如何使用AudioTrack播放一个WAV格式文件?
- 创建一个强名称密钥文件+ 如何在 Visual C# .NET 中将程序集安装到全局程序集缓存中
- [C#]如何将类放置于不同的文件中在同一个解决方案中调用?(不同解决方案的需要使用类库ClassLibrary)
- Android音频: 如何使用AudioTrack播放一个WAV格式文件?
- 如何使用DirectShow播放一个文件
- 在Linux上,如何知道一个可执行文件是否包含调试信息呢?
- 描述一个”reset“的css文件并如何使用它?知道normalize.css吗?你了解他们的不同之处吗?
- [C#]如何将类放置于不同的文件中在同一个解决方案中调用?(不同解决方案的需要使用类库ClassLibrary)
- C#中如何判断一个文件是否存在
- C# WinForm中如何保存一个文本文件或cs文件
- 黄聪:[C#]VS中如何设置相关的partial 类文件嵌套在一个文件下
- C#如何打开一个文件夹并定位到某个文件
- 如何播放一个文件
- C# 如何创建一个xml文件?并写入指定内容?
- 一个可序列化的C#对象,如何转成一个XML格式的文件或字符串(转)
- C#.NET常见问题(FAQ)-程序如何把窗体文件从从一个项目中复制到另一个项目