我一直在玩QMediaplayer图书馆。我很好奇它如何与一些流媒体视频源一起工作,所以我使用VLC使用udp协议传输一些视频。
为了进行快速测试,我使用了名为 MediaPlayer示例的Qt示例。由于该示例仅适用于脱机文件,因此我在Player实现上添加了哑函数。
void setM(QUrl url){player->setMedia(url);player->play();}
然后,在 main.cpp 文件中,我将此函数称为:
...
player.setM(QUrl("udp://239.1.1.1:1234"));
return app.exec();
这样做是在读取程序后开始再现流源。
这里的问题是Qt通过我发出以下错误:
DirectShowPlayerService::doSetUrlSource: Unresolved error code 800c000d
要使用本地文件和 http streaming 执行此操作并且它可以正常工作......但是当我尝试使用UDP或RTP时,我总是会遇到相同的错误。
我花了几个小时寻找更多信息,但总是得到相同的回复...使用QMLVLC ......例如,look this。
以前有人试过这个吗?这有什么不对?
PD:我知道有一个VLC插件可以使这个工作,但我想只使用Qt(至少,了解这里发生了什么)。PD2:我在Windows 8.1,Qt 5.5(mingw 4.9.2)上安装了所有重要的编解码器。
提前致谢,
更新
最后,我设法处理新的http://code.qt.io,这是我怀疑阻止udp(和其他)协议的代码 - > here。 也许,只有“http”和“https”被接受为Directshowsservice上的有效流源......我将尝试在本周获得一些额外的时间来重新编译windows的多媒体模块,以便将udp procotol添加到函数doSetUrlSource看看会发生什么。如果有人先测试一下,请在这里告诉我!
更新2
首先,我怀疑QMediaPlayer无法重现UDP / RTP内容,因为AddFilter方法......无论如何,http,https和rtsp运行良好。
其次,我发现了一些比udp协议更奇怪的行为。 我使用“udp://@239.1.1.1:1234”作为测试组播方向。奇怪的是,在一次测试中我错误地指出了这个方向“udp://@239.1.1.1:1234z”,这次没有错误。似乎方向需要包含一个字母。