【发布时间】:2009-10-01 12:38:22
【问题描述】:
是否有人构建了播放(流媒体或本地)视频的 Qt S60 应用(第 3 版,FP2)?
我想在小部件中播放视频,而不是使用(比如)QDesktopServices。
我知道有关于如何使用 Symbian 执行此操作的文档,例如 here 和 here,但我仍然卡住了。
(为交叉发帖提前道歉:我在其他地方问过,但没有成功。)
【问题讨论】:
标签: c++ qt video-streaming nokia s60
是否有人构建了播放(流媒体或本地)视频的 Qt S60 应用(第 3 版,FP2)?
我想在小部件中播放视频,而不是使用(比如)QDesktopServices。
我知道有关于如何使用 Symbian 执行此操作的文档,例如 here 和 here,但我仍然卡住了。
(为交叉发帖提前道歉:我在其他地方问过,但没有成功。)
【问题讨论】:
标签: c++ qt video-streaming nokia s60
Qt 4 包含一套名为 Phonon 的多媒体 API,它允许您执行此操作。它们目前正在为 Symbian 实现 - 而Qt for S60 "Tower" pre-release Symbian 上不包括对 Phonon 的支持,Qt 4.6 可以。
与此同时,您唯一的选择是直接使用 Symbian MMF API。具体来说,您的视频小部件(或它拥有的对象)将需要创建CVideoPlayerUtility 的实例,因此需要实现MVideoPlayerUtilityObserver。视频播放器 API 要求客户端提供一个在其中显示视频的 RWindow - 这可以通过调用 QWidget::winId() 来获得,它返回一个 CCoeControl* 指针。因此,您可以通过调用获得窗口句柄
RWindow& window = *static_cast<RWindow*>(widget->winId()->DrawableWindow())
总而言之,在 Symbian 上从 Qt 应用程序(或实际上任何应用程序)播放视频目前需要大量工作 - 特别是如果您希望支持视频内容的动态调整大小和/或重新定位.另请注意,当前在 Symbian 上实现 Qt 的方式意味着将其他小部件(部分或完全)移动到视频小部件顶部将无法正常工作 - 视频将继续出现在顶部。这是因为当前调用QWidget::winId() 不会导致Qt 创建本地Symbian 窗口,并将在4.6 中得到纠正。
总之,除非您急于这样做,否则最好等待几周后发布的 4.6 测试版。
【讨论】: