2013-07-15 4 views
4

웹캠에서 얻은 비디오를 녹화하려고하는데 USB 장치에 연결합니다. 나는 Linux 64 비트에서 Qt5.1.0을 연구 중이다.Qt5로 USB 캠에서 비디오 녹화

나는 다음과 같은 코드가 있습니다 :

camera = new QCamera(this); 
viewFinder = new QCameraViewfinder(this); 
camera->setViewfinder(viewFinder); 
recorder = new QMediaRecorder(camera,this); 

QVideoEncoderSettings settings = recorder->videoSettings(); 
settings.setResolution(1280,720); 
settings.setQuality(QMultimedia::VeryHighQuality); 
settings.setFrameRate(30.0); 

recorder->setVideoSettings(settings); 
camera->setCaptureMode(QCamera::CaptureVideo); 
camera->start(); 

QString name = filename + QDateTime::currentDateTime().toString("dd.MM.yy-h-m-s"); 
recorder->setOutputLocation(QUrl::fromLocalFile(outputpath + "/" + name + ".mp4")); 
recorder->record(); 

나는 다음과 같은 경고 및 오류

CameraBin error: "Internal data flow error." 

CameraBin error: "Could not negotiate format" 

그리고 사실 아무것도에서

이 기록을 얻을이 코드를 실행합니다.

제가

camera->setCaptureMode(QCamera::CaptureViewFinder); 

에러가 파일을 생성하고, 출력은 없지만, 단지 하나의 프레임 (고정 이미지)

I의 경우를 포함하기위한 광고

camera->setCaptureMode(QCamera::CaptureVideo); 

변경하면

QVideoEncoderSettings settings = recorder->videoSettings(); 
settings.setResolution(1280,720); 
settings.setQuality(QMultimedia::VeryHighQuality); 
settings.setFrameRate(30.0); 
:이 코드 조각을 제거 0

나는 두 가지 오류를 얻을 :

CameraBin warning: "A lot of buffers are being dropped." 
CameraBin error: "Could not encode stream." 

을하지만 비디오가 실제로 기록됩니다.

+0

640의 기본 해상도와 소리 수 있을까? –

+0

@MatsPetersson 그것은 그렇게 보이지 않습니다. 나는 세 가지 다른 카메라로 시도하고 난 여전히 같은 오류 – user2582879

+0

메시지는 카메라가 당신이 요구하는 형식을 지원하지 않는 것을 나타냅니다 것 같다 "형식을 협상 할 수 없습니다"점점 오전, 그래서 하나는 카메라 나 형식 당신의 그것이 틀렸다는 것을 요구하고 있습니다. –

답변

3

나는 이미지를 캡처와 거의 같은 문제에 봉착했습니다. 나는 그것이 기본 해상도 640 x 480로만 작동한다는 것을 발견했다. 해상도를 더 높은 값으로 설정하면 작동하지 않는다. 또한 성공하지 못했던 2 대의 카메라로 시도 했으므로 Qt5 문제로 보입니다. 그런 다음 비디오를 녹화 할 수 있어야 해상도를 설정하지하려고하지만, 문제는 카메라의 정확한 모델과 관련이 같은 경우에만 X 480

+0

고마워!, setResolution() 제거! CameraBin 오류가 계속 발생하지만 ** "스트림을 인코딩 할 수 없습니다." ** 실제로 비디오를 기록하지만 – user2582879