2011-01-09 43 views
5

私が必要とするのは、現在入手可能なビデオキャプチャデバイス(Webカメラ)のリストです。私は単純なC + +のQtコンソールアプリでそれが必要です。リストによって私は、このようなコンソール出力のようなものを意味する:Qt(クロスプラットフォーム)を使用して、リストのビデオキャプチャデバイスを取得する方法(Webカメラ) (C++)

1) Asus Web Camera 
2) Sony Web Camera 

だから私の質問は、QtのC++を使用してこのようなリストをcoutにどのようにでしょうか? (それが可能である場合、私は純粋なQtの中でそれを行う方法を見てみないと思います - 余分なLIBSを...)


をも、このシリーズから:正しいと

+1

私はQt4を自分自身でそれを行うには、クロスプラットフォームの方法があるとは思いません。ビデオキャプチャは進行中の作業なので、おそらくあなた自身で書く必要があります:http://doc.trolltech.com/4.7/phonon-overview.html#work-in-progress – Wolph

+0

@WoLpH:正しい場合それは非常に悲しい=( – Rella

答えて

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; 
} 
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 
関連する問題