感谢所有人提前:)
我想在你开始阅读之前说清楚我想要开发一个基于Android的应用程序,使用Android设备作为播放器,它使用麦克风录制声音并将其发送到shoutcast服务器,如下所示:
具有互联网连接的Android设备 - > Shoutcast服务器 - >听众。
所以请不要对在Android上播放shoutcast流感到困惑,因为我不想开发播放器来播放流。如果您正在寻找开发一个播放器,然后从给定的链接下载源代码,它对我来说很好。 Click to download 源代码。
现在回到我的问题,我在过去两周内搜索了很多,并找到了This文章,这篇文章帮助我使用内置麦克风的Android设备并通过本地网络流式传输。可以使用VLC监听流。
但我想向我的shoutcast服务器发送上传,就像可以使用带有DSP插件的winamp一样,问题是:
如果我使用上面This链接中的代码,它在本地n / w上工作正常但是当我尝试使用我的shoutcast服务器进行配置时,它会出错:![UnknownHostException]
in日食记录。
在shoutcast服务器上是否有任何基于url的系统,如果我将发送一个流,那么它将获取流并向我的听众广播?例如如果我想收听流(下传),我可以使用http://xx.example.com:1234;stream.mp3
,我要求上传。
如何通过登录/密码建立与服务器的连接。我想做类似于DSP插件,如附图所示。
答案 0 :(得分:1)
在这种情况下,您链接的代码不合适。它似乎是通过UDP发送原始音频数据,这完全不是SHOUTcast所使用的。
SHOUTcast服务器没有要流式传输的HTTP接口。它们使用完全独立的协议,如果需要使用SHOUTcast服务器,则必须使用该协议。 (我应该注意到,Icecast在过去一年左右刚刚添加了HTTP PUT支持。)
幸运的是,SHOUTcast源协议非常简单。您需要做的就是发送密码,然后是换行符。如果您从服务器获得了有利的响应,请发送icy-*
标题,然后发送两个换行符,然后是您的编码音频数据。几年前,当我向iOS提出这个问题时,我已经详细地概述了这个问题:https://stackoverflow.com/a/9241620/362536您可以使用像Wireshark这样的数据包嗅探器自己查看协议,并在连接Winamp SHOUTcast DSP时运行它(或其他SHOUTcast源客户端)到您的服务器。
最后,不要忘记使用适当的编解码器。使用SHOUTcast时,最好使用MP3(原样)或包含在ADTS中的AAC流。当我尝试这个项目一段时间后,我很难弄清楚如何正确编码音频,因为至少Android 2.1似乎没有办法encode to a stream and not to a file。我不是Android开发者,所以也许你会找到更好的方法!
答案 1 :(得分:0)
从
更改代码UnknownHostException ()
到
UnknownHostException(hostname)
其中hostname是Internet上服务器的名称。可能是dns或路由问题。将主机名传递给
getByName
或更好
getAllByName
,记录它,并验证它是否是预期的IP地址。
这应该为日食日志添加更多信息。