预先感谢大家:)
在开始阅读之前,我想澄清一下,我想开发一个基于android的应用程序以将android设备用作广播器,该广播器使用其麦克风记录声音并将其发送到shoutcast服务器,如下所示:
具有互联网连接的Android设备-> Shoutcast服务器->监听器。
因此,请不要与在Android上播放shoutcast流混淆,因为我不想开发一个播放流的播放器。如果您正在寻找开发播放器,然后从给定的链接下载源代码,对我来说效果很好。
Click to download 源代码。
现在回到我的问题,我在过去两周内用Google搜索了很多,发现了This文章,这有助于我使用android设备的内置麦克风并通过本地网络进行流传输。可以使用VLC收听流。
但是我想将上游发送到我的shoutcast服务器,就像可以将winamp与DSP插件一起使用一样,问题是:

  • 如果我使用上面This链接中的代码,则在本地n / w上可以正常工作,但是当我尝试使用我的shoutcast服务器对其进行配置时,它会给出错误:Eclipse日志中的![UnknownHostException]
  • shoutcast服务器上是否有任何基于url的系统,如果我向其发送流,则它将获取该流并广播给我的听众?例如如果我想收听流媒体(下行流媒体),我可以使用http://xx.example.com:1234;stream.mp3,并且我要求进行流媒体上传。
  • 如何通过登录名/密码建立与服务器的连接。我要执行与DSP插件类似的操作,如附图所示。

  • 最佳答案

    在这种情况下,您链接到的代码不合适。它似乎是用于通过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开发人员,所以也许您会找到更好的方法!

    10-08 17:13