使用Objective-C、C或C+向Icecast/SHOUTcast广播+;

使用Objective-C、C或C+向Icecast/SHOUTcast广播+;,objective-c,audio,broadcast,shoutcast,icecast,Objective C,Audio,Broadcast,Shoutcast,Icecast,我想在不使用自己的广播机的情况下将音频数据提供给SHOUTcast或Icecast服务器,因为我将在包括移动设备在内的各种平台上使用它 我需要协议描述、开源项目或样本,以便能够使用Objtovi-C、C或C++将音频数据(从MIC或文件)发送到SUTCAST和ICCAST服务器。 我在哪里可以找到构建合适的SHOUTcast/Icecast源客户端所需的信息?注释:现在是时候有人为mobile创建SHOUTcast源客户端了。我已经需要这个有一段时间了,但是没有时间来建造它,所以我为你感到荣幸。

我想在不使用自己的广播机的情况下将音频数据提供给SHOUTcast或Icecast服务器,因为我将在包括移动设备在内的各种平台上使用它

我需要协议描述、开源项目或样本,以便能够使用Objtovi-C、C或C++将音频数据(从MIC或文件)发送到SUTCAST和ICCAST服务器。 我在哪里可以找到构建合适的SHOUTcast/Icecast源客户端所需的信息?

注释:现在是时候有人为mobile创建SHOUTcast源客户端了。我已经需要这个有一段时间了,但是没有时间来建造它,所以我为你感到荣幸。请在某个时候制作一个Android版本

你应该做的第一件事是

启动数据包捕获,启动SHOUTcast服务器,然后启动源客户机,并将其连接到服务器。准备好面对这个协议的可怕的简单性

主音频协议
  • 源客户端使用TCP连接到SHOUTcast。从基本端口向上使用端口1。例如,如果您的基本端口是8000,那么您的侦听器将连接8000,而您将连接8001
  • 一旦连接,SHOUTcast服务器将不会说任何话。只需发送广播密码,然后发送新的
    CrLf
    (或
    \r\n
  • 如果密码错误,它会说
    无效密码
    或类似的话。如果它是正确的,您将得到如下结果:

    OK2

    冰帽:11

    请注意,每行后面都有
    CrLf
    ,发送这两个标头后,会有一对
    CrLf

  • 现在,由源客户机发送一组标题:
    ice name
    ice genre
    ice pub
    ice br
    ice url
    ice irc
    ice icq
    ice aim
    内容类型
    。像这样发送:

    ice name:My Awesome电台

    每行后面都应该跟着
    CrLf
    ,发送完所有标题后,发送一对
    CrLf

  • 一旦这一切完成,开始发送您的流数据!无需在任何特定地点启动,只需发送数据即可。由接收端的客户端同步到帧。SHOUTcast服务器对流经它的流量完全“哑”。如果愿意,您可以连接Telnet客户端并发送一组文本

  • 更新元数据 因此,您可能想知道如何发送下一首曲目的信息,而不是什么。有趣的是,这与您发送音频数据的连接完全是带外的

    您所要做的就是向端口库发出web请求(在我们的示例中为8000):

    在难以读取的情况下,以下是参数:

    • 通过
    • 模式
    • 网址

    您会注意到,这些相同的参数和其他参数都可以在SHOUTcast管理面板中找到。

    我开发了SHOUTcast包装本机C文件以及一个示例android应用程序,您可以从设备麦克风->流式传输


    它从麦克风捕获pcm音频,并对其进行编码。并广播ice服务器

    谢谢大家!!这个协议与ICE服务器相同吗?(这是一个标准化的协议吗?)。是的,它也应该适用于Icecast。没有书面的标准,但它是标准化的,就像所有的东西都使用它一样。@RayFrand,我应该注意到,对于Icecast,虽然您可以使用这个源协议,但每个服务器只能使用一个。如果您想编写一个纯Icecast源代码,请参阅以下内容:@Brad谢谢!这实际上也帮助了我:D,我的动机是一个基于网络的shoutcast广播公司[因此在云上广播]我很想知道向shoutcast广播的帧速率是多少?我的意思是我可以对mp3文件进行转码[我的工作方式是异步的,这会让它变得很混乱],所以我想知道是否有任何定义的数据速率要广播到服务器?或者它能处理任何事情Hi Fatih我刚看到你的github回购。我想从我的android手机向icecast服务器播放mp3。我已经建立了我的服务器,但找不到任何android应用程序的解决方案。我无法将您的回购协议用于此目的。你能指导我如何把它包括在我的测试项目中吗?
    http://yourserver:8000/admin.cgi?pass=yourpassword&mode=updinfo&song=your%20song&url=some_url_goes_here_but_hardly_any_clients_use_it