Windows Phone7 上用于 ShoutCast 的 HttpWebRequest

标签 httpwebrequest windows-phone-7 shoutcast

我想在我的 window phone 7 应用程序中播放 shoutcast 流

我像这样启动一个异步 HttpWebRequest

//Init Request

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://ACommonoShoutCastUrl:8000");

myHttpWebRequest.Headers["Icy-MetaData"] = "1";

myHttpWebRequest.UserAgent = "WinampMPEG/5.09";

myHttpWebRequest.AllowReadStreamBuffering = true;

//Call

 // Create an instance of the RequestState and assign the previous myHttpWebRequest object to its request field.  

RequestState myRequestState = new RequestState();

 myRequestState.request = myHttpWebRequest;

 // Start the asynchronous request.

 IAsyncResult result = (IAsyncResult)myHttpWebRequest.BeginGetResponse(new AsyncCallback(RespCallBack), myRequestState);

问题是永远不会调用 CallBack->RespCallBack...

此代码在其他环境中对我来说正常但在手机上不起作用...

我也厌倦了使用似乎流式传输数据的 WebClient,

这种情况下的问题是它永远不会调用结束 OpenReadCompleted 因为 endelss shoutcast 流

感谢支持

任何帮助将不胜感激

最佳答案

SHOUTcast 实现了自己的协议(protocol),因此您无法直接访问和播放它。您可以使用 DownloadStringAsync (为此您需要一个 WebClient 实例)下载 PLS 文件并借助 RegEx 读取 URL。

当你得到 URL 后,你可以通过实现 MediaStreamSource 来读取原始音频数据。然后使用 MediaElement播放内容。

您可以找到 MediaStreamSource 的示例实现 here .

关于Windows Phone7 上用于 ShoutCast 的 HttpWebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734843/

相关文章:

ASP.NET 在请求期间存储上下文数据

windows-phone-7 - 应用程序如何在 Windows Phone 7 中仅支持 "LandscapeLeft"方向?

vb.net - 必须使用适当的属性或方法 - TwitchAPI 修改 'Accept' header

c# - 如何在没有浏览器的情况下与网站互动?

windows-phone-7 - ListBox的ControlTemplate样式时如何保持虚拟化?

linux - 将端口 80 绑定(bind)到非 root 用户。中央操作系统

windows-phone-7 - WP7 Shoutcast 与 MediaStreamSource

android - 从 Shoutcast 流 Android 获取元数据

Xamarin Forms PCL - 干净、简单的网络请求方法?

silverlight - 是否可以在 SL4 中使用 WP7 Panorama 或 Pivot?