首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >适用于ShoutCast Phone7上的ShoutCast的HttpWebRequest

适用于ShoutCast Phone7上的ShoutCast的HttpWebRequest
EN

Stack Overflow用户
提问于 2010-09-17 19:21:47
回答 4查看 2.6K关注 0票数 3

我尝试在window 7应用程序中流式播放shoutcast流

我像这样启动了一个异步HttpWebRequest

代码语言:javascript
复制
//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。

感谢您的支持

任何帮助都将不胜感激

EN

回答 4

Stack Overflow用户

发布于 2010-09-19 03:20:27

SHOUTcast实现了它自己的协议,所以你不能直接访问和播放它。您可以使用DownloadStringAsync (您需要一个WebClient实例)来下载PLS文件,并在RegEx的帮助下读取

获取URL后,您可以通过实现MediaStreamSource读取原始音频数据,然后使用MediaElement播放内容。

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

票数 3
EN

Stack Overflow用户

发布于 2010-09-18 05:14:00

我只是把下面的代码放在一个页面上,然后在repsonse中调用了按钮点击的回调函数。(我在throw语句上设置了一个断点,但它被击中了。)

代码语言:javascript
复制
    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();
    }
票数 1
EN

Stack Overflow用户

发布于 2010-12-01 03:46:25

如果禁用读取流缓冲,则会调用该回调:

代码语言:javascript
复制
webRequest.AllowReadStreamBuffering = false;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3734843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档