2012-01-04 9 views
1

は、ここでの問題は OpenCVでキャプチャしたビデオはリアルタイムより速く実行されますか?私はカメラからビデオをキャプチャしてにし、AVIファイル保存するためのOpenCVを使用しています

はコード

です...私は、キャプチャを終了し、AVIファイルを実行すると、ビデオストリームはぎこちなく、高速に見えるということです私はWindows 7の32ビットまたは64ビットとVS2008 & OpenCVの2.3.1、このfuncitionのallwayリターン0にcvGetCaptureProperty(CV_CAP_PROP_FPS)を使用する場合、それが偽である理由を理解しない
int isColor = 1; 
int frameW = 640; 
int frameH = 480; 
int fps  = 25; 

CvCapture* capture = cvCaptureFromCAM(0); 
assert(capture != NULL); 

cvNamedWindow("Webcam", CV_WINDOW_AUTOSIZE); 

CvVideoWriter *writer = cvCreateVideoWriter(
    "out.avi", 
    CV_FOURCC('M','J','P','G'), 
    fps, 
    cvSize(frameW,frameH), 
    isColor 
); 

IplImage* frame = cvQueryFrame(capture); 

while((frame = cvQueryFrame(capture)) != NULL) { 
    cvWriteFrame(writer, frame); 
    cvShowImage("Webcam", frame); 
    char c = cvWaitKey(33); 
    if (c == 27) break; 
} 

、私を助けてください、ありがとう

答えて

0

cvSetCapturePropertyとcvGetCapturePropertyが必ずしも機能しない。また、fps = 30を試してみましたか?

キャプチャするfpsと同じfpsでビデオを再生する必要があることにも注意してください。

+0

私はfps = 30を試した場合、ビデオストリームを厄介なように見えるように修正する方法は非常に高速ですが、私はそれをリアルタイムで実行したいだけです – ALexF

+1

fps = 15とfps = 60を試しましたか?それはまったく違いがありますか? –

+0

ええ、私は理解しました、私はCommanlineを使用しています:ffmpeg.exe -i 1.wav -i 1.avi -acodecコピー-vcodecコピーoutput.aviですが、1つの問題があります。オーディオとビデオが同期していない、例:ビデオショーの前に発生しているサウンド、オーディオとビデオのレコードを同期する方法?? – ALexF

0

cvQueryFrameが事前に呼び出されていない限り、cvGetCapturePropertyが正常に動作しないことは既知の問題です。

+0

いいえ、それでも失敗します、これは私のコードです:cvQueryFrame(camera); \t double xxx = cvGetCaptureProperty(カメラ、CV_CAP_PROP_FPS); – ALexF

関連する問題