2012-02-22 3 views
2

웹캠을 재생할 때 WebRTC를 사용합니다 (화상 통화 전에 내 응용 프로그램에서 웹캠을 테스트하기위한 것입니다). - 웹캠의 재생이 시작하지만 videoWidget 창 빈 검은 색WebRTC Qt로 웹캠 재생

//////////////////////// 

//initialization 
{ 
webrtc::VoiceEngine* voe = VoiceEngine::Create(); 
webrtc::VoEBase* voeBase = VoEBase::GetInterface(voe); 
voeBase->Init(); 
webrtc::VideoEngine* vie = VideoEngine::Create(); 
webrtc::ViEBase* vieBase = ViEBase::GetInterface(vie); 
vieBase->Init(); 
webrtc::ViECapture* vieCapture = ViECapture::GetInterface(vie); 
} 

//////////////////////// 

// start webcam playing 
void MainWindow::StartWebcamTest() 
{ 
     // creating window for playing webcam video 
    videoWidget = new Phonon::VideoWidget(); 
    videoWidget->setFixedSize(640, 480); 
    videoWidget->setWindowTitle("Test Webcam"); 

    char captDevName[1024], captGuidName[1024]; 
    VoEEngineSingleton::Instance()->GetViECapture()->GetCaptureDevice(0, captDevName, 1024, captGuidName, 1024); 
    VoEEngineSingleton::Instance()->GetViECapture()->AllocateCaptureDevice(captGuidName, 1024, captureID); 

    testVideoChannel = VoEEngineSingleton::Instance()->GetViEBase()->CreateChannel(testVideoChannel); 
    if(testVideoChannel == -1) 
     LOGERR << "Creating video channel error: " << VoEEngineSingleton::Instance()->GetViEBase()->LastError() << endl; 
    else LOGDEBUG << "Video channel created, ID = " << testVideoChannel << endl; 

    testAudioChannel = VoEEngineSingleton::Instance()->GetVoEBase()->CreateChannel(); 
    if(testAudioChannel == -1) 
     LOGERR << "Creating audio channel error: " << VoEEngineSingleton::Instance()->GetVoEBase()->LastError() << endl; 
    else LOGDEBUG << "Audio channel created, ID = " << testAudioChannel << endl; 

    if(VoEEngineSingleton::Instance()->GetViEBase()->ConnectAudioChannel(testVideoChannel, testAudioChannel) != 0) 
     LOGERR << "ConnectAudioChannel() error: " << VoEEngineSingleton::Instance()->GetViEBase()->LastError() << endl; 
    else LOGINFO << "Audio channel connected successful " << endl; 

    if(VoEEngineSingleton::Instance()->GetViECapture()->ConnectCaptureDevice(captureID, testVideoChannel) != 0) 
     LOGERR << "ConnectCaptureDevice() error: " << VoEEngineSingleton::Instance()->GetViEBase()->LastError() << endl; 
    else LOGINFO << "Capture device connected successful " << endl; 

    if(VoEEngineSingleton::Instance()->GetViERender()->StartRender(testVideoChannel) != 0) 
     LOGERR << "StartRender() error: " << VoEEngineSingleton::Instance()->GetViEBase()->LastError() << endl; 
    else LOGINFO "StartRender() successed " << endl; 

    if(VoEEngineSingleton::Instance()->GetViECapture()->StartCapture(captureID) != 0) 
     LOGERR << "StartCapture() error: " << VoEEngineSingleton::Instance()->GetViEBase()->LastError() << endl; 
    else LOGINFO << "StartCapture() successed " << endl; 

    videoWidget->show(); 
} 

것은 내가 비디오를 재생하기 위해 버튼을 클릭 나는이 다음 몇 가지의 WebRTC 기능을한다.

내가 진실이 아닌 것은 무엇입니까? 어쩌면 다른 Qt 위젯을 사용해야할까요?

답변

0

Qt에서 비디오 렌더러를 구현해야합니다. webrtc :: ExternalRenderer를 서브 클래스 화하여 프레임을 그립니다.