Rel*_*lla 5 c++ webcam qt cross-platform device
所以我需要的只是简单 - 当前可用的视频捕获设备(网络摄像头)列表.我需要在简单的C++ Qt控制台应用程序中.按列表我的意思是像这样的控制台输出:
1) Asus Web Camera
2) Sony Web Camera
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何使用Qt C++来表达这样的列表?(如果可能的话,我很想知道如何在纯Qt中做到这一点 - 没有额外的库...)
也来自这个系列:
小智 1
我编写了以下代码来列出所有 USB 捕获设备。请记住包含 webcam.h 和 libwebcam.h 并使用 -lwebcam 将代码链接到 libwecam。
bool QextCamera::listAvailableDevices(QStringList * captureDeviceList){
CResult ret;
CDevice *devices = NULL;
quint32 req_size = 0;
quint32 buffer_size = 0;
quint32 count = 0;
QStringList availableDevices;
c_init();
do {
if (devices){
free(devices);
}
if(req_size){
devices = (CDevice *)malloc(req_size);
if(devices == NULL){
// LOG ERROR...
return false;
}
buffer_size = req_size;
}
// Try to enumerate. If the buffer is not large enough, the required size is returned.
ret = c_enum_devices(devices, &req_size, &count);
if(ret != C_SUCCESS && ret != C_BUFFER_TOO_SMALL){
// LOG ERROR...
return false;
}
} while(buffer_size < req_size);
if(count == 0) {
// LOG ERROR...
return false;
}
for(quint32 i = 0; i < count; i++) {
CDevice *device = &devices[i];
availableDevices << QString("%1 : %2 : %3").arg(device->shortName).arg(device->driver).arg(device->location);
}
if(devices){
free(devices);
}
c_cleanup();
*captureDeviceList = availableDevices;
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4691 次 |
| 最近记录: |