• 5871阅读
  • 1回复

[提问] phonon-mplayer 后端如何使用 [复制链接]

上一主题 下一主题
离线yurenjimi
 

只看楼主 倒序阅读 楼主  发表于: 2012-03-02
前因:
  QML (或者QGraphicsScene) 里使用mplayer, 窗口始终是黑色的.
  尝试Phonon模块, 把http://www.free-codecs.com/K_Lite_Codec_Pack_download.htm安装上.
  1. VideoPlayer *player = new VideoPlayer(Phonon::VideoCategory, parentWidget);
  2. connect(player, SIGNAL(finished()), player, SLOT(deleteLater()));
  3. player->play(url);
顺利播放。




接着折腾phonon-mplayer..

平台: XP+Qt4.8
获取源码:
git clone git://anongit.kde.org/phonon-mplayer
尝试1:
编译插件,放到D:\QtSDK\Desktop\Qt\4.8.0\msvc2008\plugins\phonon_backend 或 $APP/phonon_backend 下,未果(插件加载不了)。


尝试2:
把phonon-mplayer源码加到工程


Widget.cpp:
  1. #include "VideoWidget.h"
  2. #include "MediaObject.h"
  3.     Phonon::MPlayer::MediaObject *media = new Phonon::MPlayer::MediaObject(this);
  4.     Phonon::MPlayer::VideoWidget *vwidget = new Phonon::MPlayer::VideoWidget(this);
  5.     Phonon::createPath(media, vwidget);
  6.     media->play();
编译错误:
  1. widget.cpp:29:38: error: cannot convert 'Phonon::MPlayer::MediaObject*' to 'Phonon::MediaNode*' for argument '1' to 'Phonon::Path Phonon::createPath(Phonon::MediaNode*, Phonon::MediaNode*)'
修改MediaObject.h
  1. #include <Phonon/MediaNode>
  2. class MediaObject : public MediaNode public MediaController, public Phonon::MediaObjectInterface {
编译错误:
  1. MediaObject.cpp(43) : error C2512: 'Phonon::MediaNode' : no appropriate default constructor available


现在如何修改才能是Widget.cpp 里的代码可以至少编译通过, MediaNode是干什么用的?






hello world!!
离线yurenjimi

只看该作者 1楼 发表于: 2012-03-02
排除Qt 手册的影响.
注意:mplayer.exe 的位置调整为 $APP/mplayer/mplayer.exe $APP就是当前应用目录


Widget.cpp代码调整为:
  1. Phonon::MPlayer::MediaObject *media = new Phonon::MPlayer::MediaObject(this);
  2.     Phonon::MPlayer::VideoWidget *vwidget = new Phonon::MPlayer::VideoWidget(this);
  3.     vwidget->widget()->resize(1024,1024);
  4. //    Phonon::createPath(media, vwidget);
  5.     media->setSource(Phonon::MediaSource(fileName));
  6.     media->setVideoWidgetId(this->winId() /*vwidget->widget()->winId()*/);
  7.     media->play();

main.cpp
  1. QGraphicsScene scene;
  2.     Widget v;
  3.     scene.addWidget(&v);
  4.     QGraphicsView view(&scene);
  5.     view.show();

现在的问题是控制不了窗体的位置。也就是说窗体并没有resize,move。电影就是定格在某位置了。如何是好?

当然
  1. Widget v;
  2.     v.show();
还是可以能resize,move的。。
hello world!!
快速回复
限100 字节
 
上一个 下一个