如何通过分析字节模式来确定音频流类型

时间:2014-01-27 07:05:42

标签: android audio audio-streaming

我刚刚开始构建一个用于android的iternet无线电接收器应用程序,适用于.mp3和.pls扩展URL。

我发现有很多流媒体站只是由IP地址和端口号给出(例如//101.102.103.104:8080)。

我的问题是,如果我从这样的URL收到大量字节,我怎样才能确定音频流的类型(是wav还是mp3还是pls或其他东西)才能应用解码器?

由于

1 个答案:

答案 0 :(得分:0)

文件名扩展在HTTP中毫无意义。从原始数据中嗅探内容类型很困难,并不总是可靠且低效。执行此操作的正确方法是查看Content-Type响应标头。以下是流的典型标头:

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