我一直在玩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)上安装了所有重要的编解码器 .

提前致谢,

UPDATE

最后,我设法处理新的http://code.qt.io,这是我怀疑阻止udp(和其他)协议的代码 - > here . 也许,只有"http"和"https"被接受为Directshowsservice上的有效流源...我本周会尝试额外的时间来重新编译windows的多媒体模块,以便将udp procotol添加到函数doSetUrlSource中,看看会发生什么 . 如果有人先测试一下,请在这里告诉我!

UPDATE 2

首先,我怀疑QMediaPlayer无法重现UDP / RTP内容,因为AddFilter方法...无论如何,http,https和rtsp工作得很好 .

其次,我发现了一些比udp协议更奇怪的行为 . 我使用“udp://@239.1.1.1:1234”作为测试组播方向 . 奇怪的是,在一次测试中我错误地指出了这个方向“udp://@239.1.1.1:1234z”,这次没有错误 . 似乎方向需要包含一个字母 .