使用Qt播放RTP视频流?
-
13-09-2019 - |
题
我想创建一个 Qt 小部件,它可以播放传入的 RTP 流,其中视频编码为 H264 并且不包含音频。
我的基本实施计划是这样的:
我的环境:
- 乌班图9.10
- Qt 4.6
我的问题:
- 我的方法好吗?也许我忽略了一个更明显或更简单的解决方案?
- 我目前遇到这个问题:当尝试播放视频流时,MediaObject 的状态变为 ErrorState,错误类型为 FatalError。谁能告诉我我做错了什么?
编辑
我发现的一个解决方案是将 libVLC 与 Qt 结合使用,我在这篇文章中了解到了这一点 线. 。这是一个 代码示例 对于有兴趣的人。我仍在寻找基于声子的解决方案。
理想情况下,我只需要提供 SDP 文件即可完成工作。
解决方案
我能够使用 libVLC 解决方案让它工作。我不能保证这就是 最好的 解决方案,因为我只是停止关注它。
这是一个 链接到 libVLC 示例.
其他提示
我理解 Phonon 至少在 Windows 中工作的方式是 QT 为 DirectShow (\plugins\phonon_backend\phonon_ds94.dll) 和 GStreamer 在您的情况下提供了一个声子后端插件。然后,您可以获取或编写自己的 DirectShow 过滤器,该过滤器可以接受 RTP 流作为源。DirectShow 负责解码,Phonon 负责渲染。
因此,如果后端工作,应用程序代码就很简单:
Phonon::MediaObject *media = new Phonon::MediaObject();
Phonon::VideoWidget *video = new Phonon::VideoWidget();
Phonon::createPath(media, video);
media->setCurrentSource(source);
media->play();
问题似乎在于 GStreamer 后端接受 RTP 作为源。您可以在独立的 GStreamer 中毫无问题地播放该源吗?
不隶属于 StackOverflow