[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