Windows下用DirectShow查找摄像头(含分辨率)和麦克风

您所在的位置:网站首页 window10怎么测试摄像头 Windows下用DirectShow查找摄像头(含分辨率)和麦克风

Windows下用DirectShow查找摄像头(含分辨率)和麦克风

2024-06-12 20:45| 来源: 网络整理| 查看: 265

        在视频聊天、视频会议、在线监控和视频展台等项目中,需要查找出本地电脑上连接的所有摄像头,网上流传比较多的方式是ffmpeg的方式,这种方式可以跨平台,不同的平台下调用不同的库。这种方式在控制台直接打印了摄像头的信息,无法(或者说我暂时没找到)在内存中获取,因此直接采用了DirectShow的方式,DirectShow枚举IMoniker和Ipin。因为网上的文档,不是特别详尽,所以我写了本文,我尽量解释清楚,分段贴出部分代码,主要是要看明白并且理解,通过本文中的方式,基本可以列出电脑上的摄像头和麦克风,以及他们的参数。

    在另外一篇文章中,介绍了如何利用获取的设备信息播放和编解码:《MFC中如何利用ffmpeg和SDL2.0多线程多窗口播放摄像头的视频》

1、用ffmpeg的方式

1)ffmpeg功能强大,关于ffmpeg的详细文档,可以去官网看看:http://ffmpeg.org/

直接静态库或者动态库好了,不怕麻烦的可以下载开发版:https://ffmpeg.zeranoe.com/builds/

2)关于ffmpeg支持的设备列表,可以参考下面的链接:

http://www.ffmpeg.org/ffmpeg-devices.html

3)这种方式比较简单,其实在Widows下还是调用dshow,

直接传入“list_devices”,列出设备列表。先看看命令行方式。

 

ffmpeg -list_devices true -f dshow -i dummy

上面的命令行和下面的代码是一个效果,看看命令行的参数和下面的代码的几个参数,是不是一样?

 

所以啊,如果看到命令行的例子,在写代码调用接口时可以参考他

 

//Show directshow devicevoid show_dshow_device{AVFormatContext *pFormatCtx = avformat_alloc_context();AVDictionary* options = NULL;av_dict_set(&options, "list_devices", "true", 0);AVInputFormat *iformat = av_find_input_format("dshow");avformat_open_input(&pFormatCtx, "video=dummy", iformat, &options);}

4)上面不是列出了设备名吗?那么把设备名传入下面的函数,就可以列出该设备支持的分辨率等信息

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3