2017-05-24 50 views
0

我有一个关于Google Cast的MediaInfo.Builder的问题。我使用了以下代码:Chromecast MediaInfo.Builder无法播放shoutcast

MediaInfo mediaInfo = new MediaInfo.Builder("http://shoutcast2.index.uz.zgora.pl:8000") 
       .setStreamType(MediaInfo.STREAM_TYPE_LIVE) 
       .setContentType("audio/mpeg") 
       .build(); 

但是演员根本不工作。原因是,该URL导致SHOUTCAST。显然,问题出在内容类型上。有人可能会建议哪些contentType用于shoutcast流,或者至少提供一些解决方法吗?

谢谢。

回答

1

而不是http://shoutcast2.index.uz.zgora.pl:8000/,请使用http://shoutcast2.index.uz.zgora.pl:8000/;。注意结尾的分号。

SHOUTcast服务器将在User-Agent请求标头中寻找Mozilla,作为检测浏览器与媒体播放器的一种方式。如果服务器认为客户端是浏览器,它将发送管理页面而不是流。通过在请求URI中传递;,SHOUTcast服务器将使用MPEG OVERRIDE的用户代理字符串,并将发送实际的流数据。

你应该知道SHOUTcast并不是真正的HTTP兼容。它足够接近它可能会工作,但可能在未来停止工作。 Icecast是几个更好的选择之一。

+0

我试过这个,解决方案不工作。也许还需要设置其他的东西。你有什么想法? – Tom11

+0

@ Tom11可以是任何东西,但不知道“不工作”是什么意思的具体细节,不可能给你一个有用的答案。 – Brad

0

布拉德的解决方案为我工作。在端口后添加了斜线和分号。我还将内容类型从audio/mpeg更改为audio/mp3。我的工作代码看起来像这样。

MediaInfo mediaInfo = new MediaInfo.Builder("http://shoutcast2.index.uz.zgora.pl:8000/;") 
       .setStreamType(MediaInfo.STREAM_TYPE_LIVE) 
       .setContentType("audio/mp3") 
       .build(); 
+0

您的内容类型错误。 'audio/mpeg'就是它应该是的。 'audio/mp3'无效。 – Brad