AForge获取本机视频设备列表
来源:互联网 发布:蜂窝数据用量0 编辑:程序博客网 时间:2024/04/29 13:36
最近项目写了一个ffmpeg rtmp推流器,需要查询电脑视频列表。
研究了下大概有3种方法
1.利用ffmpeg打印
void 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");//av_log_set_callback(my_logoutput);printf("========Device Info=============\n");avformat_open_input(&pFormatCtx, "video=dummy", iformat, &options);printf("================================\n");avformat_free_context(pFormatCtx);//av_log_set_callback(NULL); }
这样打印可能只能在控制台才能看到,对于编程不实用
这里我提供一个投机取巧的方式供大家参考可以得到名称集合
原理就是改变ffmpeg的打印输出log对象 捕获到log 就可以进行分析了
void my_logoutput(void* ptr, int level, const char* fmt, va_list vl) {FILE *fp = fopen("my_log.txt", "a");if (fp) {vfprintf(fp, fmt, vl);fflush(fp);fclose(fp);}}
利用av_log_set_callback函数就可以实现捕获
2.利用原生direshow方法,这个方法是最好的 ffmpeg和其他类库都是基于这个接口。这个我没研究 感觉操作起来比较麻烦3.利用AForge库
发现用AForge类库是最简单的,因为里面封装好了
现在贴出AForge 代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using AForge.Video.DirectShow;namespace CRLIVE.UI.BLL{ public static class CheckDevices { static FilterInfoCollection videoDevices; public static void AForgeShowDevicesList() { // show device list try { // enumerate video devices videoDevices = new FilterInfoCollection(FilterCategory.AudioInputDevice); if (videoDevices.Count == 0) throw new ApplicationException(); // add all devices to combo foreach (FilterInfo device in videoDevices) { Console.WriteLine(device.Name); } } catch (ApplicationException) { Console.WriteLine("No local capture devices"); } } }}
注意需要引用命名空间
using AForge.Video.DirectShow;
dll下载
1 0
- AForge获取本机视频设备列表
- Atitit 获取本机图像设备视频设备列表 设备检索列表解决方案
- 获取本机多个摄像头(aforge)
- C# 获取本机“设备管理器”信息列表
- 获取本机浏览器列表
- Android获取本机各种类型文件列表(音乐、视频、图片、文档等)
- directshow学习笔记二-----获取视频设备列表
- 获取本机号码及设备信息
- Qt 应用获取本机设备IP
- 获取本机IP地址列表
- VC获取本机IP地址列表
- c#获取本机串口列表
- VC获取本机IP地址列表
- c#获取本机的串口列表
- linux下利用libpcap 得到本机网卡设备列表
- 获取设备列表
- winpcap获取设备列表
- 利用ioctl获取本机指定设备的MAC地址
- JAVA文件操作类和文件夹的操作
- 如何动态加载apk文件(未安装的apk)中的类
- iOS 远程消息推送 APNS推送原理和一步一步开发详解篇
- poj 3461 (看毛片算法初探)
- PHP编程效率的20个要点
- AForge获取本机视频设备列表
- liunx 录制命令 script
- 卸载LoadRunner及破解
- redis与mysql数据同步
- hdu1372-Knight Moves BFS
- STM32 day4
- SDUTACM 图结构练习——BFS——从起始点到目标点的最短步数
- IOS 中的CoreImage框架(framework)
- AndroidASD完全解析03之FloatingActionButton