使用PHP从音频流中提取音轨信息是否可以使用PHP从音频流中提取音轨信息?我已经做了一些挖掘,我能找到的最接近的函数是stream_get_transports,但我的主机不支持通过fsockopen()的http传输,所以我将不得不做一些修补,看看该函数返回的是什么。目前,我正在尝试从AOL流中提取艺术家和跟踪元数据。
3 回答
![?](http://img1.sycdn.imooc.com/54584d080001566902200220-100-100.jpg)
森栏
TA贡献1810条经验 获得超5个赞
非常感谢代码fra_casula。这是在PHP <= 5.3(原始目标为5.4)上运行的略微简化的版本。它还重用相同的连接资源。
我因为自己的需要删除了异常,如果找不到任何内容则返回false。
private function getMp3StreamTitle($steam_url) { $result = false; $icy_metaint = -1; $needle = 'StreamTitle='; $ua = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36'; $opts = array( 'http' => array( 'method' => 'GET', 'header' => 'Icy-MetaData: 1', 'user_agent' => $ua ) ); $default = stream_context_set_default($opts); $stream = fopen($steam_url, 'r'); if($stream && ($meta_data = stream_get_meta_data($stream)) && isset($meta_data['wrapper_data'])){ foreach ($meta_data['wrapper_data'] as $header){ if (strpos(strtolower($header), 'icy-metaint') !== false){ $tmp = explode(":", $header); $icy_metaint = trim($tmp[1]); break; } } } if($icy_metaint != -1) { $buffer = stream_get_contents($stream, 300, $icy_metaint); if(strpos($buffer, $needle) !== false) { $title = explode($needle, $buffer); $title = trim($title[1]); $result = substr($title, 1, strpos($title, ';') - 2); } } if($stream) fclose($stream); return $result; }
- 3 回答
- 0 关注
- 786 浏览
添加回答
举报
0/150
提交
取消