关于DirectShow中摄像头的帧率设置
来源:互联网 发布:大脚 mac 编辑:程序博客网 时间:2024/05/17 02:53
最近无更新,再转一篇自己以前写的一个博客,关于Directshow中帧率的设定问题。
我发现在DirectShow中,不管是把帧率的值设置为多少,IAMStreamConfig::SetFormat()这个函数都不会失败。检查返回值,也是返回了S_OK,这就说明设置成功。但是实际上,摄像头采集的帧率不可能是任意一个值。查了一些资料,并写了些代码测试,发现一些问题。
我是用的罗技C310摄像头做的测试,本机上并没有装任何罗技摄像头驱动,就当一个普通的设备使用。当我用枚举设备的方式(DirectShow中枚举摄像头的采集分辨率这篇文中讲过)来查看有多少支持的帧率时,得到的分辨率有10帧、20帧、25帧和30帧。DirectShow中是以100纳秒为单位,也就是得到的实际值是1000000、500000、4000000和3333333。方式如下:
#include"SmartPtr.h" // 这个头文件参考Windows SDK里面DirectShow部分的代码,里面有这个头文件
#include<dshow.h>
#include<fstream>
HRESULT GetCaptureRatio(IBaseFilter* pCapFilter, ICaptureGraphBuilder2* pBuild) {
}
但是,为什么任意设定的值也能成功呢?如果任意设置分辨率的话,就会失败,说明帧率的确成功了。后来查查MSDN,发现有这么一段话。帧率是介于一个最小值与最大值之间的一个值。当设置的帧率超过最大值,系统会选择m最大值作为帧率,同样,当设置的帧率小于最小值,系统就会选择最小值作为帧率。当设置的帧率介于这之间,但是摄像头又不支持的话,系统会选取一个最接近的帧率。
也就是说,帧率的设置一般都会成功的。但是根据我的经验,最好是设置为5、10、15、20、25和30。当然,一些高级点的摄像头都支持更高的帧率,但是需要安装驱动。
- 关于DirectShow中摄像头的帧率设置
- 关于DirectShow中摄像头的帧率设置
- directshow 摄像头参数 设置
- DirectShow中枚举摄像头分辨率
- DirectShow中获得摄像头的DevicePath, 得到如下不同效果
- directshow中WMV码流的设置
- 摄像头帧率设置问题的解决
- 摄像头ov2685中关于sensor id 设置的相关的寄存器地址
- 利用directshow进行摄像头的开发
- wince下的directshow摄像头应用程序介绍
- DirectShow自带的实例(打开摄像头)
- directshow抓取摄像头数据的封装类
- 关于directshow的SmartTee
- DirectShow:图片的抓取---从摄像头流中捕捉一张图片zzDirectshow中的视频捕捉
- 在Qt中利用window下的DirectShow获取摄像头名称示例
- opencv中一些关于摄像头的操作
- DirectShow中利用SampleGrabber捕获摄像头每一帧图像,并转为BMP文件信息写入内存
- DirectShow中利用SampleGrabber捕获摄像头每一帧图像,并转为BMP文件信息写入内存
- [备忘]收集的一些题集(更新中)
- python sqlite多线程编程
- grinder 测试HSF 协议
- IT研究员是产品经理中的工程师和工程师中的计算机专家——geek
- 单片机反汇编程序员居然沦落为电工!
- 关于DirectShow中摄像头的帧率设置
- <算法导论>第八章4 水壶(Kettle)
- Android sdcard相关内容
- android应用开发笔记---Activity和Intent
- HttpWatch工具简介及使用技巧
- CSS控制连续英文字母和数字强制换行
- NDK编译Android字符界面的可执行程序
- 超强的12306的随机概率,国人的骄傲
- linux下c编程系统调用之有名管道FIFO函数的使用及案例