首页 > 解决方案 > 使用iceast服务器开发网络电台监听客户端

问题描述

我正在使用 Icecast 协议在 C 中设置一个互联网广播侦听器客户端。我是初学者。我怎样才能连接到icecast?如何解码音频流?

标签: cicecastinternet-radio

解决方案


我建议看看其他玩家,但基本上你有两个组成部分:

  • 获取流
  • 解码流并将其发送到音频设备

首先,我强烈建议使用已建立的 HTTP 库,例如cURL,因为即使您需要为传统流格式设置自定义标头,您也可以轻松地做到这一点。

对于后者来说,这也不是特别难,但如果你想处理传统的流格式(ICY/Shoutcast 类型的多路元数据流),那么你需要做额外的工作。

主要支持的 Icecast 流格式使用Ogg容器,并且有libOgg来处理这个问题。如果您希望能够处理 WebM 音频,您还需要将 WebM/MKV/EBML 作为容器来处理,我希望有一个库。

然后将数据实际解码为未压缩的音频,然后发送到操作系统的声音系统。这可以是 libopus、libvorbis 或其他中的编解码器实现。

最后两个步骤也可以通过获取各种库(如 libffmpeg 或 gstreamer)来实现。这比从头开始实施要普遍得多。有些人甚至选择让播放器库完成 HTTP(S) 部分。

请注意,我没有涵盖上面的 MP3 或原始 AAC 等传统格式,但对于这些格式来说,情况有些相似。


推荐阅读