gpt4 book ai didi

c# - Icecast 2 : protocol description, 使用 C# 流式传输到它

转载 作者:可可西里 更新时间:2023-11-01 03:13:17 26 4
gpt4 key购买 nike

我需要编写一个 Icecast 2 客户端,它能够将音频从计算机(mp3 文件、声卡录音等)流式传输到服务器。我决定用 C# 编写这样一个客户端。

两个问题:

1) 了解我可能/应该/必须用来在 C# 中无缝处理流式音频(当然是通过网络流式传输)的通用指南(最佳实践,也许是技巧)将非常有用。一些关于通过 TCP/IP 流式传输的一般技术文档,特别是 ICY,关于应用程序整体架构的建议和注释将非常感激。

2) 是否有关于 Icecast 2 流媒体协议(protocol)的任何好的文档?我在 Icecast 的官方网站上找不到这些文档。我不想直接从它的源代码中提取协议(protocol)描述。如果协议(protocol)真的简单明了,有人可以在这里提供它的摘要吗?

最佳答案

据我所知,除了 Icecast 源代码之外,没有任何协议(protocol)规范。这是我从数据包嗅探中发现的:

音频流

协议(protocol)类似于HTTP。源客户端将连接到服务器,使用挂载点发出请求,并传递一些带有流信息的 header :

SOURCE /mp3test ICE/1.0
content-type: audio/mpeg
Authorization: Basic c291cmNlOmhhY2ttZQ==
ice-name: This is my server name
ice-url: http://www.google.com
ice-genre: Rock
ice-bitrate: 128
ice-private: 0
ice-public: 1
ice-description: This is my server description
ice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2

如果一切正常,服务器响应:

HTTP/1.0 200 OK

然后源客户端继续发送二进制流数据。请注意,似乎有些编码器甚至不等待服务器响应 200 OK 就开始发送流数据。只是标题、一个空行,然后是流数据。

元数据

元数据使用带外 HTTP 请求发送。源客户端发送:

GET /admin/metadata?pass=hackme&mode=updinfo&mount=/mp3test&song=Even%20more%20meta%21%21 HTTP/1.0
Authorization: Basic c291cmNlOmhhY2ttZQ==
User-Agent: (Mozilla Compatible)

服务器响应:

HTTP/1.0 200 OK
Content-Type: text/xml
Content-Length: 113

<?xml version="1.0"?>
<iceresponse><message>Metadata update successful</message><return>1</return></iceresponse>

另请注意,音频流和元数据请求均在同一端口上发送。与 SHOUTcast 不同,这是运行服务器的基本端口。

关于c# - Icecast 2 : protocol description, 使用 C# 流式传输到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5215019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com