[Qt-mobility-feedback] QMediaRecorder - Is it possible to record to a file from a video file which played using QMediaPlayer ?
Luoma Antti
Antti.Luoma at digia.com
Tue Mar 2 21:35:43 CET 2010
Hi,
QMediaplayer services don't implement needed controls needed for recording. Have a look at:
void QMediaRecorderPrivate::initControls()
{
Q_Q(QMediaRecorder);
if (!service)
return;
control = qobject_cast<QMediaRecorderControl*>(service->control(QMediaRecorderControl_iid));
formatControl = qobject_cast<QMediaContainerControl *>(service->control(QMediaContainerControl_iid));
audioControl = qobject_cast<QAudioEncoderControl *>(service->control(QAudioEncoderControl_iid));
videoControl = qobject_cast<QVideoEncoderControl *>(service->control(QVideoEncoderControl_iid));
.
.
//service is a QMediaService which is in this case a pointer to the QMediaPlayerService. For example in linux backends it uses gstreamer which provides these controls:
QMediaControl *QGstreamerPlayerService::control(const char *name) const
{
if (qstrcmp(name,QMediaPlayerControl_iid) == 0)
return m_control;
if (qstrcmp(name,QMetaDataControl_iid) == 0)
return m_metaData;
if (qstrcmp(name,QMediaStreamsControl_iid) == 0)
return m_streamsControl;
if (qstrcmp(name, QVideoOutputControl_iid) == 0)
return m_videoOutput;
if (qstrcmp(name, QVideoWidgetControl_iid) == 0)
return m_videoWidget;
if (qstrcmp(name, QVideoRendererControl_iid) == 0)
return m_videoRenderer;
if (qstrcmp(name, QVideoWindowControl_iid) == 0)
return m_videoWindow;
return 0;
}
So it does not work way you want. If I have understood correctly there was some plans adding media transcoding to the media api which could be the thing you want. But at the moment it is not possible.
-Antti-
>-----Original Message-----
>From: qt-mobility-feedback-bounces at trolltech.com
>[mailto:qt-mobility-feedback-bounces at trolltech.com] On Behalf
>Of Hannu Shemeikka
>Sent: Monday, March 01, 2010 11:45 PM
>To: qt-mobility-feedback at trolltech.com
>Subject: [Qt-mobility-feedback] QMediaRecorder - Is it
>possible to record to a file from a video file which played
>using QMediaPlayer ?
>
>Hi,
>
>I'm wondering if it's possible to use QMediaRecorder to record
>a part of
>a video which is played using QMediaPlayer. If it's not possible, could
>you guys tell me how can I do this without QMediaRecorder.
>
>Part of my code:
>
>MainWindow::MainWindow(QWidget *parent) :
> QMainWindow(parent),
> ui(new Ui::MainWindow)
>{
>.
>.
>player = new QMediaPlayer(this);
>videoWidget = new QVideoWidget(ui->MovieWidget);
>videoWidget->setMediaObject(player);
>.
>.
>}
>void MainWindow::on_pbRecord_clicked()
>{
>.
>.
>QMediaRecorder *q_Recorder = new QMediaRecorder(player,this);
>QAudioEncoderSettings audioSettings;
>audioSettings.setCodec("audio/vorbis");
>audioSettings.setQuality(QtMedia::HighQuality);
>QVideoEncoderSettings videoSettings;
>videoSettings.setCodec("video/mpeg2");
>videoSettings.setResolution(120,120);
>
>q_Recorder->setEncodingSettings(audioSettings,videoSettings);
>q_Recorder->setOutputLocation(QUrl::fromLocalFile("/home/test/t
>estRecord"));
>q_Recorder->record();
>.
>.
>}
>
>This builds and runs without errors but it doesn't record
>anything. It's
>quite possible that I have some errors in my code which is why it
>doesn't record.
>
>- Hannu
>
>_______________________________________________
>Qt-mobility-feedback mailing list
>Qt-mobility-feedback at trolltech.com
>http://lists.trolltech.com/mailman/listinfo/qt-mobility-feedback
>
More information about the Qt-mobility-feedback
mailing list