gpt4 book ai didi

php - 使用 PHP 从音频流中提取音轨信息

转载 作者:IT王子 更新时间:2023-10-28 23:59:09 24 4
gpt4 key购买 nike

是否可以使用 PHP 从音频流中提取音轨信息?我已经进行了一些挖掘,我能找到的最接近的函数是 stream_get_transports 但我的主机不支持通过 fsockopen() 进行的 http 传输,所以我必须做更多的修改才能看到该函数还返回什么。

目前,我正在尝试从 AOL 流中提取艺术家和轨道元数据。

最佳答案

这是一个 SHOUTcast 流,是的,这是可能的。它与 ID3 标签完全无关。我刚才写了一个脚本来做这个,但再也找不到了。就在上周,我帮助另一个拥有相当完整脚本的人做同样的事情,但我不能只发布源代码,因为它不是我的。但是,如果您给我发电子邮件,我会让您与他联系 brad@musatcha.com .

无论如何,以下是您自己的操作方法:

您需要做的第一件事是直接连接到服务器。不要使用 HTTP。好吧,您可能会使用 cURL,但它可能比它的值(value)更麻烦。您使用 fsockopen() 连接到它(doc)。确保使用正确的端口。另请注意,许多 Web 主机会阻止很多端口,但您通常可以使用端口 80。幸运的是,所有 AOL 托管的 SHOUTcast 流都使用端口 80。

现在,像您的客户一样提出您的请求。

GET /whatever HTTP/1.0

但是,在发送之前 <CrLf><CrLf> , 包含下一个标题!

Icy-MetaData:1

这会告诉服务器您需要元数据。现在,发送您的一双 <CrLf> .

好的,服务器将用一堆 header 进行响应,然后开始向您发送数据。在这些 header 中将是一个 icy-metaint:8192或类似的。 8192 是元区间。这很重要,而且确实是您需要的唯一值(value)。通常为 8192,但并非总是如此,因此请务必实际读取此值!

基本上这意味着,您将获得 8192 字节的 MP3 数据,然后是一大块元数据,然后是 8192 字节的 MP3 数据,然后是一大块元数据。

读取 8192 字节的数据(确保您不包括此计数中的 header ),丢弃它们,然后读取下一个字节。该字节是元数据的第一个字节,表示元数据的长度。取此字节的值(带ord() 的实际字节(doc )),并将其乘以16。结果是元数据要读取的字节数。将这些字节数读入一个字符串变量以供您使用。

接下来,修剪这个变量的值。为什么?因为字符串用 0x0 填充最后(使其均匀地适合 16 字节的倍数)和 trim() ( doc ) 为我们解决了这个问题。

你会得到这样的东西:

StreamTitle='Awesome Trance Mix - DI.fm';StreamUrl=''

我会让你选择你选择的解析方法。就我个人而言,我可能会在 ; 上以 2 为上限进行拆分。 , 但要注意包含 ; 的标题.我不确定转义字符方法是什么。进行一些小实验应该会对您有所帮助。

完成后不要忘记断开与服务器的连接!

那里有很多 SHOUTcast 元数据引用。这是一个很好的:http://www.smackfu.com/stuff/programming/shoutcast.html

关于php - 使用 PHP 从音频流中提取音轨信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911062/

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