我尝试在window 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,
这种情况下的问题是,由于endelss shoutcast流,它从不调用end OpenReadCompleted。
感谢您的支持
任何帮助都将不胜感激
发布于 2010-09-19 03:20:27
SHOUTcast实现了它自己的协议,所以你不能直接访问和播放它。您可以使用DownloadStringAsync (您需要一个WebClient实例)来下载PLS文件,并在RegEx的帮助下读取。
获取URL后,您可以通过实现MediaStreamSource读取原始音频数据,然后使用MediaElement播放内容。
您可以找到MediaStreamSource here的示例实现。
发布于 2010-09-18 05:14:00
我只是把下面的代码放在一个页面上,然后在repsonse中调用了按钮点击的回调函数。(我在throw语句上设置了一个断点,但它被击中了。)
private HttpWebRequest myHttpWebRequest;
public MainPage()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//Init Request
//The following URI was chosen at random
myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://yp.shoutcast.com/sbin/tunein-station.pls?id=1377200");
myHttpWebRequest.Headers["Icy-MetaData"] = "1";
myHttpWebRequest.UserAgent = "WinampMPEG/5.09";
myHttpWebRequest.AllowReadStreamBuffering = true;
// Start the asynchronous request.
myHttpWebRequest.BeginGetResponse(RespCallBack, myHttpWebRequest);
}
private void RespCallBack(IAsyncResult ar)
{
throw new NotImplementedException();
}发布于 2010-12-01 03:46:25
如果禁用读取流缓冲,则会调用该回调:
webRequest.AllowReadStreamBuffering = false;https://stackoverflow.com/questions/3734843
复制相似问题