Qt录制视频使用QMediaRecorder无法正常工作

时间:2014-03-17 10:52:29

标签: c++ qt video video-recording

我在qt录制视频时遇到问题。如果有人知道答案或提示,我将非常高兴。 :)

我正在使用:

  1. Windows 7 64位
  2. QT 5.1.1
  3. 使用OpenGL的MSVC 2010 32位
  4. 问题:

    我按照文档(http://qt-project.org/doc/qt-5.0/qtmultimedia/cameraoverview.html)和(http://www.meetingcpp.com/index.php/br/items/recording-videos-with-qt5.html)中解释的示例进行操作,并按照以下方式执行:

     m_camera = new QCamera;
     m_mediaRecorder = new QMediaRecorder(m_camera);
    ...
    ...
     QVideoEncoderSettings settings =  m_mediaRecorder->videoSettings();
     settings.setResolution(800, 600);
     settings.setQuality(QMultimedia::LowQuality);
     settings.setFrameRate(30.0);
     m_mediaRecorder->setVideoSettings(settings);
    ...
     m_camera->setCaptureMode(QCamera::CaptureVideo);
    ...
     m_camera->focus();
    
      
        按钮记录上的

    单击:

      
    m_camera->focus();
    bool ret = m_mediaRecorder->setOutputLocation(QUrl::fromLocalFile("testvideo.mp4"));
    qDebug()<<"ret: "<<ret;
    m_mediaRecorder->record();
    
      
        

    按钮停止:

      
    m_mediaRecorder->stop();
    

    这个想法是不存在输出视频。我打印了函数m_mediaRecorder.setOutputLocation()的返回值,该函数总是返回false。该文档给出了一个示例,说明setOutputLocation如何失败(使用QUrl网络,这不是我的情况),但没有指定如何使用本地QUrl失败。我认为给出错误的路径会让mediaRecorder抱怨所以我也尝试了以下内容:

    bool ret = m_mediaRecorder->setOutputLocation(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/" + "testvideo.mp4"));
    bool ret = m_mediaRecorder->setOutputLocation(QUrl("file:///path/to/my/working/directory/testvideo.mp4"));
    

    但它也失败了:|。

    有人可以帮我解决这个问题吗?非常感谢你提前!

1 个答案:

答案 0 :(得分:2)

似乎问题是由于插件更改尚未完全实现,录制仍然无法用于Windows,如here所述

我在Mac上测试过,它工作正常。要在Windows上修复此问题,我使用了QtMEL library