我刚刚开始为Android构建Iternet radio 接收器应用程序,该应用程序对于.mp3和.pls扩展URL都可以正常工作。

我发现有许多流媒体站仅由IP地址和端口号提供(例如,// 101.102.103.104:8080)。

我的问题是,如果我从此类URL接收到大量字节,如何确定音频流的类型(是wav还是mp3或pls或其他),以便应用解码器?

谢谢

最佳答案

文件名扩展名在HTTP中没有意义。从原始数据中嗅探内容类型是困难的,并非始终可靠且效率低下。正确的方法是查看Content-Type响应 header 。这是流的典型头:

Cache-Control:no-cache
Content-Type:audio/mpeg
Expires:Mon, 26 Jul 1997 05:00:00 GMT
icy-br:256
icy-genre:Drum and Bass Jungle
icy-name:Drum and Bass - Digitally Imported Premium
icy-notice1:<BR>This stream requires <a href="http://www.winamp.com/">Winamp</a><BR>
icy-notice2:SHOUTcast Distributed Network Audio Server/Linux v1.9.8<BR>
icy-pub:0
icy-url:http://www.di.fm
Pragma:no-cache
Server:Icecast 2.3.3-kh7

内容类型audio/mpeg表示MP3(或其他一些MPEG音频流,但我只见过MP3)。还有很多其他的,例如audio/aacpaudio/ogg

07-26 04:10