c - 使用iceast服务器开发网络电台监听客户端
问题描述
我正在使用 Icecast 协议在 C 中设置一个互联网广播侦听器客户端。我是初学者。我怎样才能连接到icecast?如何解码音频流?
解决方案
我建议看看其他玩家,但基本上你有两个组成部分:
- 获取流
- 解码流并将其发送到音频设备
首先,我强烈建议使用已建立的 HTTP 库,例如cURL,因为即使您需要为传统流格式设置自定义标头,您也可以轻松地做到这一点。
对于后者来说,这也不是特别难,但如果你想处理传统的流格式(ICY/Shoutcast 类型的多路元数据流),那么你需要做额外的工作。
主要支持的 Icecast 流格式使用Ogg容器,并且有libOgg来处理这个问题。如果您希望能够处理 WebM 音频,您还需要将 WebM/MKV/EBML 作为容器来处理,我希望有一个库。
然后将数据实际解码为未压缩的音频,然后发送到操作系统的声音系统。这可以是 libopus、libvorbis 或其他中的编解码器实现。
最后两个步骤也可以通过获取各种库(如 libffmpeg 或 gstreamer)来实现。这比从头开始实施要普遍得多。有些人甚至选择让播放器库完成 HTTP(S) 部分。
请注意,我没有涵盖上面的 MP3 或原始 AAC 等传统格式,但对于这些格式来说,情况有些相似。
推荐阅读
- javascript - javascript动态删除文本
- javascript - Angular JS - 遍历多个对象的属性
- angular - 将函数引用传递给孩子
- apache-spark - 内置日期和时间相关功能的时区火花处理
- epson - Epson JavaPOS ADK 安装未完成
- android - 使用 QuaggaJS 的 Phonegap
- node.js - 为什么我的导入@angular/core 的路径与在线教程不同?
- sql - 从 SQL Server 中的 MAX() GROUP BY 中选择行
- android - 允许用户为自己“创建一个新的活动”?
- vba - VBA - 识别从其他子程序/程序调用的子程序和函数