【问题标题】:Broadcast to Icecast / SHOUTcast with Objective-C, C, or C++使用 Objective-C、C 或 C++ 广播到 Icecast / SHOUTcast
【发布时间】:2012-02-11 09:04:10
【问题描述】:

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

我需要协议描述、开源项目或示例,以便能够使用 Objective-C、C 或 C++ 将音频数据(来自麦克风或文件)发送到 SHOUTcast 和 Icecast 服务器。

我在哪里可以找到构建合适的 SHOUTcast/Icecast 源客户端所需的信息?

【问题讨论】:

    标签: objective-c audio broadcast shoutcast icecast


    【解决方案1】:

    评论:是时候有人为移动设备制作 SHOUTcast 源客户端了。我已经需要这个有一段时间了,但没有时间构建它,所以向你致敬。请在某个时候制作一个 Android 版本。

    你应该做的第一件事是download Wireshark

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

    主要音频协议

    1. 源客户端使用 TCP 连接到 SHOUTcast。使用从基本端口向上的端口一。例如,如果您的基本端口是 8000,则您的侦听器连接到 8000,而您将连接到 8001。
    2. 一旦连接,SHOUTcast 服务器不会说什么。只需发送广播密码,然后发送新的CrLf(或\r\n)。
    3. 如果密码错误,它会说invalid password 或类似的东西。如果它是正确的,你会得到这样的东西:

      OK2

      icy-caps:11

      注意每一行后面都有CrLf,而这两个头发送后,还有一对CrLf

    4. 现在,由源客户端发送一堆标头:icy-nameicy-genreicy-pubicy-bricy-urlicy-ircicy-icqicy-aimcontent-type。像这样发送它们:

      icy-name:My Awesome Station

      每一行后面都应该有CrLf,在你发送完所有的标题之后,发送一对CrLf

    5. 完成后,开始发送流数据!无需从任何特定位置开始,只需发送数据即可。由接收端的客户端同步到帧。 SHOUTcast 服务器对流经它的流量完全“愚蠢”。如果需要,您可以连接 Telnet 客户端并发送一堆文本。

    更新元数据

    所以,您可能想知道如何为下一首曲目发送信息,以及如何发送信息。有趣的是,这与您发送音频数据的连接完全是带外的。

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

    http://yourserver:8000/admin.cgi?pass=yourpassword&mode=updinfo&song=your%20song&url=some_url_goes_here_but_hardly_any_clients_use_it
    

    如果难以阅读,这些是参数:

    • 通过
    • 模式
    • 歌曲
    • 网址

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

    【讨论】:

    • 谢谢!这个协议和 Icy 服务器一样吗? (它是一个标准化的协议吗?)我将在发现音频转换为广告后开始实现它。
    • ICY 是 SHOUTcast。是的,它也应该与 Icecast 一起使用。没有书面标准,但它以一切使用它的方式标准化。
    • @RayFrand,我应该注意,使用 Icecast,虽然您可以使用此源协议,但每台服务器只能使用一个。如果你想写一个纯 Icecast 源码,看这个:stackoverflow.com/a/9985297/362536
    • @Brad 谢谢!这实际上也帮助了我:D,我的动机是基于网络的广播广播 [以便在云端广播]
    • 我很想知道广播到广播的帧速率是多少?我的意思是我可以对 mp3 文件进行转码 [我的工作是异步进程,这有点让它变得混乱] 所以我想知道是否有任何定义的数据速率要广播到服务器?或者它可以处理任何事情
    【解决方案2】:

    我开发了一个可以从设备麦克风流式传输的示例 android 应用程序以及一个可以从设备麦克风流式传输的喊声包装器原生 C 文件 -> android-icecast-broadcast

    它从麦克风捕获、编码 pcm 音频。并广播冰服务器。

    【讨论】:

    • 嗨 Fatih,我刚刚看到了你的 github 存储库。我想将 mp3 从我的 android 手机广播到 icecast 服务器。我已经建立了我的服务器,但找不到任何适用于 android 应用程序的解决方案。而且我无法为此目的使用您的回购。你能指导我如何将它包含在我的测试项目中吗?
    • 你的库很棒,使用 Icecast 可以正常工作,但是当我尝试使用shoutcast 配置运行时没有任何反应
    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多