Qt5、Phonon和Multimedia kit

7

我是一个新手Qt开发者,正在MacOSX上使用Qt5 Beta1。

过去两天,我一直在阅读文档并寻找有关实现显示视频帧的小部件的不同可能性的信息,该视频帧对应于特定时刻。简而言之,就是一个旧的预览。首先,我认为由于我不需要任何花哨的东西,Phonon将是正确的选择,因为它被称为“比QTMultimedia更高级(对于应用程序开发人员来说更合适)”。我阅读了它的文档,甚至找到了一些可以帮助我入门的讨论,例如这个链接:http://www.qtcentre.org/threads/13221-QT-4-4-Phonon-Video-Rendering-a-single-frame。但是,当我试图自己制作一些东西时,我意识到我没有Phonon库。我对此感到惊讶,因此我研究了Phonon和Qt5。那时所有的麻烦都开始了。

我开始阅读这样的对话:http://comments.gmane.org/gmane.comp.lib.qt.user/1581 或者这个链接:http://comments.gmane.org/gmane.comp.lib.qt.devel/3905 或者这个链接:https://bugreports.qt.io/browse/QTBUG-26471。我感到非常困惑,不知道是否明智下载Phonon库,或者在一段时间后是否不再支持Qt5。因此,我决定退一步,重新考虑使用QTMultimedia而不是Phonon。我看了他们的VideoWidget示例http://doc.qt.io/qt-4.8/qt-multimedia-videowidget-example.html,当我尝试运行它时,它会抛出多个错误(我只发布输出的开头):

In file included from ../VideoExample/videoplayer.cpp:43:
In file included from ../VideoExample/videowidget.h:44:
../VideoExample/videowidgetsurface.h:57:11: warning: 'VideoWidgetSurface::isFormatSupported' hides overloaded virtual function [-Woverloaded-virtual]
 bool isFormatSupported(const QVideoSurfaceFormat &format, QVideoSurfaceFormat *similar) const;
      ^
../../Downloads/qt-everywhere-opensource-src-5.0.0-beta1/qtbase/include/QtMultimedia/../../../qtmultimedia/src/multimedia/video/qabstractvideosurface.h:78:18: note: hidden overloaded virtual function 'QAbstractVideoSurface::isFormatSupported' declared here
virtual bool isFormatSupported(const QVideoSurfaceFormat &format) const;
             ^
../VideoExample/videoplayer.cpp:61:40: error: expected a type
 QAbstractButton *openButton = new QPushButton(tr("Open..."));
                                   ^
../VideoExample/videoplayer.cpp:62:6: error: no matching member function for call to 'connect'
 connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));
 ^~~~~~~
../../Downloads/qt-everywhere-opensource-src-5.0.0-beta1/qtbase/include/QtCore/../../src/corelib/kernel/qobject.h:211:36: note: candidate function not viable: cannot convert argument of incomplete type 'QAbstractButton *' to 'const QObject *'
static QMetaObject::Connection connect(const QObject *sender, const char *signal,

这一刻我感到彻底迷失并写下了这里 :/

我的实际问题是:

  1. 有人知道Phonon的实际状态,并且使用它用于Qt5是否是个好主意吗?如果是,我需要做什么使其工作?我猜我在混淆概念,但我对Qt和其他概念感到非常困惑,两种可能性的影响是什么。
  2. 为什么QTMultimedia的示例不起作用?

总之,对这个话题的想法将不胜感激。

2个回答

6

在Qt 5中似乎没有包含Phonon框架(Qt和关键技术).

你测试的例子似乎只适用于Qt 4.7,而不是Qt 5。可以在此处找到Qt 5.0版本。可以在此处找到Qt 5.1版本。


谢谢,我会查看Qt5的示例版本!抱歉如果听起来有些愚蠢,但是不包括是否意味着不能使用还是只是不推荐使用? - AlvaroSantisteban
很遗憾,这个例子目前还没有包含任何代码... :/ - AlvaroSantisteban
3
即使在早期版本的Qt中,也不推荐使用Phonon,因为Phonon是一个KDE项目,包含很多特定于KDE的功能。另外,据我所知,Qt 4.4是最后一个正式支持Phonon的Qt版本。如今,QtMultimedia和QtMobility已经取代了Phonon。 - Vinícius Gobbo A. de Oliveira
我不知道这些示例是否会被添加到Qt 5中。抱歉! - Vinícius Gobbo A. de Oliveira
抱歉,Qt在Qt 4.4中采用了Phonon。将继续支持Qt 4.x系列,但不支持Qt 5。 - Vinícius Gobbo A. de Oliveira
显示剩余2条评论

0

尝试安装 Phonon 开发工具包。

yum install phonon-devel


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接