2011-02-04 7 views

答えて

3

Windows Image Acquisition (WIA)または/およびDirectShowを使用できます。別の良い選択肢はMicrosoft Media Foundationcapturing videoの章)です。

これは面倒なことですが、これは簡単な作業ではありません。OpenCVを使用すると、よりうまくいく可能性があります。

ネットワーク部分に関しては、それはあなたのデザインと好みに左右されます。

+0

私はOpenCVを使用することをお勧めしますか?あなたの意見では、どのメトスがMSNやSkypeのようなプログラムを使用していますか?ありがとう:) – xRobot

+0

ほとんどの人は、それらを直接使用するのではなく、[GIPS](http://)のようなapisのこの種の醜い側面を隠すラッパーライブラリの形で、独自に開発した、 gipscorp.com/)、Googleが現在取得しています。 Yahooメッセンジャー、例えば。 GIPSを使用しました。 GIPSもネットワーキングの部分を扱うことができました。 :-) – Shinnok

3

私も同様の作業を完了しています。私は様々なツールやライブラリを見ていました。

DirectShowはWindowsのデフォルトAPIですが、単純なタスクでは複雑です。 OpenCVはデバイスサポートに遅れており、videoInput(プラグイン/アドオン)はOpenCVを改善しています。

私はシンプルな表示起動して実行することができました:videoInputライブラリとOpenCVのを使用して

http://www.aishack.in/2010/03/capturing-images-with-directx/

を:

http://muonics.net/school/spring05/videoInput/

OpenCVのは、しかし最初として、複雑に見えるかもしれリンクはコードの唯一のページを示します:

#include "stdafx.h" 
#include "videoInput.h" 
#include "cv.h" 
#include "highgui.h" 

int main() 
{ 
    videoInput VI; 
    int numDevices = VI.listDevices(); 
    int device1= 0; 
    VI.setupDevice(device1); 
    int width = VI.getWidth(device1); 
    int height = VI.getHeight(device1); 
    IplImage* image= cvCreateImage(cvSize(width, height), 8, 3); 
    unsigned char* yourBuffer = new unsigned char[VI.getSize(device1)]; 
    cvNamedWindow("test"); 
    while(1) 
    { 
     VI.getPixels(device1, yourBuffer, false, false); 
     image->imageData = (char*)yourBuffer; 
     cvConvertImage(image, image, CV_CVTIMG_FLIP); 
     cvShowImage("test", image); 
     if(cvWaitKey(15)==27) break; 
    } 

    VI.stopDevice(device1); 
    cvDestroyWindow("test"); 
    cvReleaseImage(&image); 

    return 0; 
} 

videoInput.hは、起動して実行するために必要なドキュメントです。そこから、より高度な機能についてOpenCVのドキュメントを読むことができます。上の例では、 "イメージ"を取り出して、何とかネットワーク経由でパイプしたいと思うでしょう。どちらがあなたの通信プロトコルにかなっています。 Windows用

1

典型的なアプローチ:多分live555 libraryの助けを借りて、リアルタイムのストリーミングのために、カムからビデオをキャプチャRTP protocol(UDP上で)使用するDirectShowを使用しています。

DirectShowの方法: ネットワークにオーディオ/ビデオをストリームするレンダラーフィルタと、ネットワークからオーディオ/ビデオを受信するソースフィルタを実装します。データフロー:

web-cam source filter -> your renderer filter -> [network] -> your source filter -> video renderer filter 
                       -> audio renderer filter 

Skypeは、キャプチャにDirectShowを使用し、描画にDirectXを使用します。彼らはセキュリティのための独自のネットワークプロトコルを使用する(私はあなたがこのような何かを疑う)を疑う。

関連する問題