有没有办法在Android上播放shoutcast/icecast?将icecast URL传递给媒体播放器不起作用,在研究了主题之后,似乎是因为android无法在没有媒体容器的情况下播放原始aac文件.
我该怎么做才能解决这个问题?
谢谢
我http.request()在普通的HTTP服务器上使用Node的基本功能没有问题.我需要http.request()与SHOUTcast服务器一起使用(或类似).SHOUTcast"协议"与HTTP完全兼容,除了一个细节......第一个响应行.
普通HTTP服务器响应:
HTTP/1.1 200 OK
Run Code Online (Sandbox Code Playgroud)
SHOUTcast服务器响应:
ICY 200 OK
Run Code Online (Sandbox Code Playgroud)
同样,协议的其余部分是相同的.唯一的区别是HTTP/1.xvs ICY..
我想扩展,子类或以某种方式修改Node的http.request()功能,以便我可以使它与SHOUTcast服务器一起工作.之前已经完成了与节点连接到SHOUTcast ,但只能通过重新发明整个轮子.我宁愿不这样做,因为它只是一个小的协议差异.
创建我自己的代码来解析HTTP的相关部分,但尽可能多地重用HTTP的现有Node组件.
创建一个简单的内部代理(或以某种方式中继数据),以便我可以在它到达Node的HTTP解析器之前修改第一个服务器响应行.
别的什么?
我也考虑过使用Shred,但它没有提供流式响应的选项.(它等待整个服务器响应在触发事件之前完成,这对于数据无限期运行的流服务器不起作用.)沿着同样的路线,我尝试了Request,但它使用了Node自己的HTTP解析器,所以我得到与原生HTTP客户端相同的解析错误.
我正在尝试设置一个可以收听多个(私有)流的页面.不幸的是我无法让它运行.我尝试使用php在Android上打开实时音频流,但由于某种原因,浏览器在加载脚本时卡住了.
请参阅下面的脚本以及工作主机的示例(请参阅http://icecast.omroep.nl/radio4-bb-mp3)
请有人请赐教.
Tnx提前!
$host = "icecast.omroep.nl";
$port = 80;
$sub = "/radio4-bb-mp3";
$sock = fsockopen($host,$port, $errno, $errstr, 30);
if (!$sock){
throw new Exception("$errstr ($errno)");
}
header("Content-type: audio/mpeg");
header("Connection: close");
fputs($sock, "GET $sub HTTP/1\r\n");
fputs($sock, "Host: $host \r\n");
fputs($sock, "Accept: */*\r\n");
fputs($sock, "Icy-MetaData:1\r\n");
fputs($sock, "Connection: close\r\n\r\n");
fpassthru($sock);
fclose($sock);
Run Code Online (Sandbox Code Playgroud)