如何取得视频文件的帧的宽高?

还不够格啊 2014-04-08 10:31:31
C#,VS2012,一堆各种格式的视频文件。

在Windows的文件管理器中,可以选择是否显示帧的宽和高列,大部分文件能显示出来,但也有小部分没有显示。


我的目的是,在不播放这些视频文件的前提下,如何用C#得到每个文件的帧的宽和高?要求方法通用,不要编程做解码,可以调用系统的DLL,例如调用Windows文件管理器的某某接口,实在不行也可以调用第三方工具,但要求不能直接使用工具,而是要C#调用工具得到。
...全文
899 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
还不够格啊 2014-04-18
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
不从事视频工作,看到了帖子觉得有点兴趣就查了下,但碍于公司限制没有测试条件,和楼主分享下我查的一些方法,希望有用。 第一个是使用Shell32.dll获取文件的详细信息 第二个是开源的第三方MediaInfo 第三个是Directshow中的IMediaDet进行视频帧的提取,但Directshow是做播放器的,可能会要打开视频,这还要楼主自己去尝试 暂时就发现这几个方法,如果楼主成功或者有新的方法记得分享学习下
用Shell32.dll只能有效获取一部分视频文件(不超过50%)的帧宽高信息,不能有效获取的值都为空或0。 用MediaInfo可以获取绝大部分(99%)视频文件的帧宽高信息,1%抛出异常不能获取。最大的问题是获取效率很低,超过一半的视频文件的获取需要耗时1秒以上,这对于有数百个文件的操作来说不能接受。 还没有找到更好的方法。
xdashewan 2014-04-08
  • 打赏
  • 举报
回复
不从事视频工作,看到了帖子觉得有点兴趣就查了下,但碍于公司限制没有测试条件,和楼主分享下我查的一些方法,希望有用。 第一个是使用Shell32.dll获取文件的详细信息 第二个是开源的第三方MediaInfo 第三个是Directshow中的IMediaDet进行视频帧的提取,但Directshow是做播放器的,可能会要打开视频,这还要楼主自己去尝试 暂时就发现这几个方法,如果楼主成功或者有新的方法记得分享学习下
niekangshibendan 2014-04-08
  • 打赏
  • 举报
回复
Shell32吧,解码的办法都要打开视频才能获取吧~~!
卧_槽 2014-04-08
  • 打赏
  • 举报
回复
ffmpeg

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧