在Windows 8 Metro C# XAML应用程序中,我如何播放H.264 RTSP视频?

8

我有一个设备可以从URL提供H.264视频流,例如: rtsp://192.168.0.10:554/videoservice

由于这是实时视频,我不需要控制它(暂停,倒带等),只需要播放。 MediaElement或其他标准类是否支持此功能?我需要像Smooth Streaming Client SDK这样的东西,还是比我想象的要复杂得多?

更新: 我下载了Microsoft的Player Framework,但这也无法播放流。 我在示例中找不到关于RTSP的任何信息。

更新: 我使用Wireshark比较了VLC Media Player(可以工作)发送的数据包与MediaElement和Player Framework发送的数据包,发现它们都没有使用RTSP协议。相反,它们向不同的地址发送WPAD数据包,尽管我已经提供了源的IP地址。为什么需要这样做?有没有办法关闭这种行为?

1个回答

8
请查看此帖子您需要将数据封装在MPEG-4 Part 14容器中,然后将它们传递给MediaElement.SetSource。似乎您无法仅使用文档化的API完成此操作。以下是链接中的重要信息:

我们不支持RTP,而是支持MPEG-4 Part 14容器格式。 您需要编写自己的源代码才能解析数据并将其直接传递给Microsoft解码器。目前,我们没有任何关于如何编写自定义源代码并从Metro样式应用程序中加载它的示例。不幸的是,不能仅通过文档了解如何执行此操作。我一直在与Stan交谈,我们正在尝试弄清楚如何以及何时可以提供此信息。一旦此信息可用,我将在我的博客http://blogs.msdn.com/mediasdkstuff/上公布。

此处列出了支持的视频格式列表。
还有一个示例在这里,展示了如何扩展媒体类,其中可能会有类似于您要求的示例。 此处也有类似的示例。

您是否有任何特别要求需要添加到我的回答中? - N_A
2
不,只是感到沮丧,因为微软让支持RTSP变得如此困难。这比我现在有时间做的工作要多得多,所以我不得不搁置这个项目。 - parsley72

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