使用 PHP 从音频流中提取曲目信息
确定使用 PHP 从音频流中提取曲目信息是否可行会引导我们到stream_get_transports函数。然而,对于那些通过 fsockopen() 遇到 HTTP 传输支持限制的人来说,需要探索替代方法。
深入研究元数据提取
幸运的是,从音频流是可能的,特别是在 SHOUTcast 流的情况下。此操作与提取 ID3 标签不同,需要独特的方法。
建立连接
通过 fsockopen() 直接连接到服务器,指定适当的端口(例如,端口 80)。使用 HTTP 请求与服务器通信,并包含 Icy-MetaData:1 标头来请求元数据。
了解元间隔
服务器将使用包含以下内容的标头进行响应icy-metaint 值,表示元间隔。这个间隔决定了流中元数据包的频率。
读取和解析元数据
丢弃 8192 字节的 MP3 数据,然后读取第一个字节,这表示元数据包的长度。将此字节值乘以 16 以确定要读取元数据的字节数。
分割和检索信息
修剪元数据字符串以删除填充。解析字符串,在“;”处分割它分隔符,用于提取曲目标题和流 URL 等信息。
可选资源
有关 SHOUTcast 元数据检索的进一步帮助,请参阅外部资源,例如https://web.archive.org/web/20191121035806/http://www.smackfu.com/stuff/programming/shoutcast.html。
以上是PHP 可以从音频流中提取曲目信息吗?的详细内容。更多信息请关注PHP中文网其他相关文章!