Пример #1
0
void Document::stopRecording()
{
	if(!isRecording())
		return;

	m_recorder->close();
	delete m_recorder;
	m_recorder = nullptr;

	emit recorderStateChanged(false);
}
Пример #2
0
VideoRecorder::VideoRecorder(QDeclarativeItem *parent) :
    QDeclarativeItem(parent)
{
    m_camera = new QCamera(this);
    connect(m_camera, SIGNAL(stateChanged(QCamera::State)), SLOT(cameraStateChanged(QCamera::State)));
    connect(m_camera, SIGNAL(statusChanged(QCamera::Status)), SLOT(cameraStatusChanged(QCamera::Status)));
    connect(m_camera, SIGNAL(error(QCamera::Error)), SLOT(cameraError(QCamera::Error)));

    m_viewFinder = new QGraphicsVideoItem(this);
    m_viewFinder->setAspectRatioMode(Qt::IgnoreAspectRatio);
    m_camera->setViewfinder(m_viewFinder);
    m_camera->setCaptureMode(QCamera::CaptureVideo);

    m_recorder = new QMediaRecorder(m_camera, this);
    connect(m_recorder, SIGNAL(stateChanged(QMediaRecorder::State)), SLOT(recorderStateChanged(QMediaRecorder::State)));
    connect(m_recorder, SIGNAL(error(QMediaRecorder::Error)), SLOT(recorderError(QMediaRecorder::Error)));
    connect(m_recorder, SIGNAL(durationChanged(qint64)), SLOT(videoDurationChanged(qint64)));
}
Пример #3
0
bool Document::startRecording(const QString &filename, QString *error)
{
	Q_ASSERT(!isRecording());

	// Set file suffix if missing
	QString file = filename;
	const QFileInfo info(file);
	if(info.suffix().isEmpty())
		file += ".dprec";

	// Start the recorder
	m_recorder = new recording::Writer(file, this);

	if(!m_recorder->open()) {
		if(error)
			*error = m_recorder->errorString();
		delete m_recorder;
		m_recorder = nullptr;
		return false;

	}

	QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
	m_recorder->writeHeader();

	QList<protocol::MessagePtr> snapshot = m_canvas->generateSnapshot(false);
	for(const protocol::MessagePtr ptr : snapshot) {
		m_recorder->recordMessage(ptr);
	}

	QSettings cfg;
	cfg.beginGroup("settings/recording");
	if(cfg.value("recordpause", true).toBool())
		m_recorder->setMinimumInterval(1000 * cfg.value("minimumpause", 0.5).toFloat());

	connect(m_client, &net::Client::messageReceived, m_recorder, &recording::Writer::recordMessage);

	QApplication::restoreOverrideCursor();

	emit recorderStateChanged(true);

	return true;
}