2011-01-09 5 views
5

तो मुझे बस इतना आसान है - वर्तमान में उपलब्ध वीडियो कैप्चर डिवाइस (वेब ​​कैमरे) की एक सूची। मुझे इसे सरल सी ++ क्यूटी कंसोल ऐप में चाहिए। सूची से मेरा इस तरह सांत्वना उत्पादन की तरह कुछ मतलब है:Qt (crossplatform) का उपयोग कर एक सूची वीडियो कैप्चर डिवाइस NAMES (वेब ​​कैमरा) कैसे प्राप्त करें? (सी ++)

1) Asus Web Camera 
2) Sony Web Camera 

तो मेरे सवाल का कैसे क्यूटी सी ++ का उपयोग करते हुए इस तरह के सूची अदालत के लिए है? (यदि यह संभव है कि मैं कितना शुद्ध क्यूटी में यह करने के लिए देखने के लिए अच्छा लगेगा - बिना किसी अतिरिक्त libs ...)


भी इस श्रृंखला से

: सही साथ

+1

मुझे नहीं लगता कि वहाँ एक पार मंच तरीका क्यूटी 4 के साथ ही यह करने के लिए है। चूंकि वीडियो कैप्चरिंग एक काम प्रगति पर है, इसलिए आपको शायद इसे स्वयं लिखना होगा: http://doc.trolltech.com/4.7/phonon-overview.html#work-in- प्रगति – Wolph

+0

@WoLpH: यदि आप सही हैं यह बहुत दुखी है = ( – Rella

उत्तर

1

मैंने सभी यूएसबी कैप्चर डिवाइसों को सूचीबद्ध करने के लिए निम्न कोड लिखा है। 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; 
} 
0

मैंने कैमरे को सूचीबद्ध करने और उनके बारे में कुछ जानकारी प्राप्त करने के लिए इस उदाहरण कोड का उपयोग किया।

#include <QtMultimedia/QCameraInfo> 

QList<QCameraInfo> cameras = QCameraInfo::availableCameras(); 
foreach (const QCameraInfo &cameraInfo, cameras) { 
    qDebug() << "Name: " << cameraInfo.deviceName(); 
    qDebug() << "Position: " << cameraInfo.position(); 
    qDebug() << "Orientation: " << cameraInfo.orientation(); 
} 

समर्थक फ़ाइल में शामिल करना न भूलें:

QT += multimedia 
संबंधित मुद्दे

 संबंधित मुद्दे