预先感谢大家:)
在开始阅读之前,我想澄清一下,我想开发一个基于android的应用程序以将android设备用作广播器,该广播器使用其麦克风记录声音并将其发送到shoutcast服务器,如下所示:
具有互联网连接的Android设备-> Shoutcast服务器->监听器。
因此,请不要与在Android上播放shoutcast流混淆,因为我不想开发一个播放流的播放器。如果您正在寻找开发播放器,然后从给定的链接下载源代码,对我来说效果很好。
Click to download 源代码。
现在回到我的问题,我在过去两周内用Google搜索了很多,发现了This文章,这有助于我使用android设备的内置麦克风并通过本地网络进行流传输。可以使用VLC收听流。
但是我想将上游发送到我的shoutcast服务器,就像可以将winamp与DSP插件一起使用一样,问题是:
![UnknownHostException]
。http://xx.example.com:1234;stream.mp3
,并且我要求进行流媒体上传。最佳答案
在这种情况下,您链接到的代码不合适。它似乎是用于通过UDP发送原始音频数据,这根本不是SHOUTcast使用的。
SHOUTcast服务器没有要流式传输的HTTP接口(interface)。它们使用完全独立的协议(protocol),如果需要使用SHOUTcast服务器,则必须使用该协议(protocol)。 (我应该注意,Icecast在过去一年左右的时间里刚刚添加了HTTP PUT支持。)
幸运的是,SHOUTcast源协议(protocol)非常简单。您需要做的就是发送密码,然后输入换行符。如果您从服务器获得满意的响应,则发送icy-*
header ,然后发送两个换行符,然后发送编码的音频数据。我在几年前针对iOS提出此问题时已对此进行了详细概述:https://stackoverflow.com/a/9241620/362536您可以通过使用数据包嗅探器(例如Wireshark)并在将Winamp SHOUTcast DSP(或其他SHOUTcast源客户端)连接到Windows XP时运行它来自己查看协议(protocol)您的服务器。
最后,不要忘记使用适当的编解码器。借助SHOUTcast,最好使用MP3(按原样)或包装在ADTS中的AAC流。不久前尝试该项目时,我很难弄清楚如何正确编码音频,因为至少Android 2.1似乎没有办法使用encode to a stream and not to a file。我不是Android开发人员,所以也许您会找到更好的方法!