我正在使用MediaPlayer类从Android应用程序中的IceCast 2.3.2-kh29服务器加载MP3流。
播放效果很好,但有时会停止。如果在IcyStreamMeta类中看到针对ID3标签的服务器响应,则在这种情况下会出现404错误。
它也发生在Windows 7:Firefox和其他浏览器中。
这是普通的 header (某些数据已***):
http://***:14534/***.mp3
GET /***.mp3 HTTP/1.1
Host: ***:14534
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
HTTP/1.1 200 OK
Server: nginx/1.4.1
Date: Tue, 23 Jul 2013 21:22:00 GMT
Content-Type: audio/mpeg
Transfer-Encoding: chunked
Connection: keep-alive
icy-br: 192
ice-audio-info: bitrate=192;samplerate=44100;channels=2
icy-description: MP3 192 Kbps
icy-genre: ***
icy-name: ***
icy-pub: 1
icy-url: ***
Cache-Control: no-cache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
因此,流有时只播放约一分钟或更短的时间,有时仅播放几秒钟并停止。 404错误的可能原因是什么?在其他设备中,测试工作稳定。上网速度很好。路由器会引起这种情况吗?此外,IceCast可能需要一些特殊的HTTP请求 header (如果不存在,则为404)?还是在某些情况下是内部服务器错误?
So, from WireShark:
2973 53.630385000 SERVER'S IP 192.168.100.6 TCP 1466 14534 > 59847 [ACK] Seq=1284017 Ack=1 Win=63 Len=1412
2976 53.636352000 SERVER'S IP 192.168.100.6 TCP 1157 14534 > 59847 [PSH, ACK] Seq=1285429 Ack=1 Win=63 Len=1103
2978 53.671606000 SERVER'S IP 192.168.100.6 TCP 60 14534 > 59847 [PSH, ACK] Seq=1286532 Ack=1 Win=63 Len=5
2980 53.678606000 SERVER'S IP 192.168.100.6 TCP 60 14534 > 59847 [FIN, ACK] Seq=1286537 Ack=2 Win=63 Len=0
最佳答案
问题是您的分块编码。您正在通过Nginx代理流,并且Nginx正在“修复”输出以与HTTP / 1.0兼容。不要那样做
您可以尝试在Nginx配置中关闭分块编码:
chunked_transfer_encoding off
关于http - IceCast 2.3.2-kh29服务器流404错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17821926/