У меня проблема с записью видео в QT. Я буду очень рад, если кто-то знает ответ или дает подсказку. 🙂
Я использую:
Эта проблема:
Я следовал примеру, описанному в документации (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"));
но это также не помогает:
Может кто-нибудь помочь мне с этой проблемой? Заранее большое спасибо!
Кажется, проблема в том, что запись все еще не работает для окон из-за смены плагина, которая еще не полностью реализована, как объяснено Вот
Я проверил его на Mac, и он работал нормально. Чтобы исправить это на окнах, я использовал Библиотека QtMEL.
Других решений пока нет …