php 截取音频文件后缀名,使用PHP从音频流中提取音轨信息

这是一个PHP功能,让您从流媒体URL中提取MP3元数据(StreamTitle)。

通常,流服务器icy-metaint在响应中放置一个标题,告诉我们在流中发送元数据的频率。该函数检查该响应头,如果存在,它将用它替换interval参数。

否则,该函数调用关于您的间隔的流式URL,如果没有任何元数据,则它会再次尝试从offset参数开始的递归。<?php /**

* Please be aware. This gist requires at least PHP 5.4 to run correctly.

* Otherwise consider downgrading the $opts array code to the classic "array" syntax.

*/function getMp3StreamTitle($streamingUrl, $interval, $offset = 0, $headers = true){

$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 = [

'http' => [

'method' => 'GET',

'header' => 'Icy-MetaData: 1',

'user_agent' => $ua        ]

];

if (($headers = get_headers($streamingUrl))) {

foreach ($headers as $h) {

if (strpos(strtolower($h), 'icy-metaint') !== false && ($interval = explode(':', $h)[1])) {

break;

}

}

}

$context = stream_context_create($opts);

if ($stream = fopen($streamingUrl, 'r', false, $context)) {

$buffer = stream_get_contents($stream, $interval, $offset);

fclose($stream);

if (strpos($buffer, $needle) !== false) {

$title = explode($needle, $buffer)[1];

return substr($title, 1, strpos($title, ';') - 2);

} else {

return getMp3StreamTitle($streamingUrl, $interval, $offset + $interval, false);

}

} else {

throw new Exception("Unable to open stream [{$streamingUrl}]");

}}var_dump(getMp3StreamTitle('http://str30.creacast.com/r101_thema6', 19200));

我希望这有帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab画圆柱,Matlab 画三维圆柱体

主要学习了画空间圆柱体和空间长方形的绘制方法。有两个surface property&#xff1a;FaceColor和EdgeColor’;先讲FaceColor’&#xff0c;它指定了surface画出曲面的颜色&#xff0c;可以是[r,g,b]的一个向量&#xff0c;分别表示了红绿蓝的颜色配比&#xff1b;也可以是inte…

matlab类间散度矩阵,协方差矩阵和散布矩阵(散度矩阵)的意义

在机器学习模式识别相关算法中&#xff0c;经常需要求样本的协方差矩阵C和散布矩阵S。如在PCA主成分分析中&#xff0c;就需要计算样本的散度矩阵&#xff0c;而有的教材资料是计算协方差矩阵。实质上协方差矩阵和散度矩阵的意义就是一样的&#xff0c;散布矩阵(散度矩阵)前乘以…

把树分成森林 matlab,20170106RF_Matlab 随机森林指的是利用多棵树对样本进行训练并预测的一种分类器,包括两个方面:数据的随 269万源代码下载- www.pudn.com...

文件名称: 20170106RF_Matlab下载 收藏√ [5 4 3 2 1 ]开发工具: matlab文件大小: 441 KB上传时间: 2017-01-06下载次数: 0提 供 者: yanxiu详细说明&#xff1a;随机森林指的是利用多棵树对样本进行训练并预测的一种分类器&#xff0c;包括两个方面&#xff1a;数据的随…

inur new.php id,Cmsez(随易)全站系统 0day

程序名称&#xff1a;Cmsez Web Content Manage System v2.0.0文件&#xff1a;comments.php viewimg.php代码&#xff1a;---------------//commentsinclude "mainfile.php";$artnew article();//设定$confirmyes;//yes:需要管理员认证后才能显示,no:直接显示$membe…

PHP红黑源码,红黑树的实现源码(第二次修订版)

/*-----------------------------------------------------------RB-Tree的插入和删除操作的实现算法参考资料:1) <>2) http://lxr.linux.no/linux/lib/rbtree.c作者&#xff1a;http://www.cppblog.com/converse/您可以自由的传播&#xff0c;修改这份代码&#xff0c;转…

python 自动点击上传以后上传文件,python使用selenium模拟点击网页实现自动导入上传文件功能...

一、环境准备Python版本&#xff1a;3.4编辑器&#xff1a;Pycharmexcel文件&#xff1a;导入的excel模板二、python代码由于工作需要&#xff0c;需要每天定时导入相关excel文件进入后台数据库&#xff0c;由于导入的逻辑比较复杂&#xff0c;所以决定通过python模拟登陆导入网…

php绘制频谱图,一步一步教你实现iOS音频频谱动画(二)

本文是系列文章中的第二篇&#xff0c;上篇讲述了音频播放和频谱数据计算&#xff0c;本篇讲述数据处理和动画的绘制。前言在上篇文章中我们已经拿到了频谱数据&#xff0c;也知道了数组每个元素表示的是振幅&#xff0c;那这些数组元素之间有什么关系呢&#xff1f;根据FFT的原…

php删除尾部字符,php如何删除字符串末尾字符

我们知道字符串删除字符的方式有好几种&#xff0c;今天就来介绍三种php删除字符串最后一个字符的函数&#xff0c;有需要的小伙伴可以参考一下。方法一&#xff1a;substr()函数substr()函数返回字符串的一部分。语法如下&#xff1a;substr(string string, int start, int [l…

empinfo Oracle数据库,Oracle数据库---包

--根据员工号或员工姓名获取员工的信息--根据员工号或员工姓名删除员工的信息--创建包规范CREATE OR REPLACE PACKAGE overload_pkgISFUNCTION get_info(eno NUMBER) RETURN emp%ROWTYPE;FUNCTION get_info(name VARCHAR2) RETURN emp%ROWTYPE;PROCEDURE del_emp(eno NUMBER);P…

oracle查看context,oracle context(上下文)

context在计算机领域翻译为上下文context的信息也就是当前会话中的环境变量&#xff0c;如&#xff1a;登录的session_id&#xff0c;用户名&#xff0c;语言等信息查看context中的属性信息。oracle默认的为我们创建了一个context叫userenv(user environment)SYS_CONTEXT(USERE…

oracle标量子查询的优势,标量子查询

--标量子查询select e.empno, e.ename, e.sal, e.deptno,(select d.dname from dept d where e.deptno d.deptno)as dnamefrom emp e--插入一条数据insert into emp(empno,deptno) values(9999,null)--返回结果15条记录--改成left join(hash outer)select e.empno, e.ename, e…

切割照片php上传,php下ajax的文件切割上传

var myForm document.getElementById("myForm");var upfile document.getElementById("upfile");myForm.onsubmit function() {//获取文件对象var file upfile.files[0];//获取文件大小var fileSize file.size;//一次截取的大小(字节)var CutSize 10…

oracle插补缺失日期,Oracle连接 ORA-28001: 口令已经失效解决方法

cmd进入命令行C:UsersAdministrator>sqlplus / as sysdbaSQL*Plus: Release 11.2.0.1.0 Production on 星期四 9月 24 15:19:21 2020Copyright (c) 1982, 2010, Oracle. All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Pr…

PHP 蒙太奇马赛克拼图,AndreaMosaic制作一幅马赛克拼图

大家在网上应该都见过用很多幅图片拼成的马赛克图片&#xff0c;今天小编就为大家介绍AndreaMosaic制作一幅马赛克拼图方法&#xff0c;不会的朋友快快来学习吧&#xff01;软件名称&#xff1a;AndreaMosaic(蒙太奇图片制作软件) V6.1.0.4 中文安装免费版软件大小&#xff1a;…

php mongo 查询count,[PHP] 使用PHP在mongodb中进行count查询

原文&#xff1a;https://www.cnblogs.com/taoshihan/p/12362111.html在php7的mongodb扩展中&#xff0c;当要查询某个集合在某个条件下的数据个数时&#xff0c;可以使用下面的方式来获取。比原生的命令要复杂许多比旧版mongo扩展也复杂许多需要使用到MongoDB\Driver\Command …

oracle字段类型设计,Oracle字段类型设计与实际业务不符引发的问题

在Oracle表的设计过程中&#xff0c;开发人员总是对字段的类型不以为然&#xff0c;下面来演示一个例子&#xff0c;按照应该设计为number的&#xff0c;结果设计成了varcha在Oracle表的设计过程中&#xff0c;开发人员总是对字段的类型不以为然&#xff0c;下面来演示一个例子…

linux下进程监控6,Linux进程监控技术—精通软件性能测试与LoadRunner最佳实战(6)...

8.2.5 Linux操作系统进程监控技术Linux在进程监控方面同样出色&#xff0c;不仅可以通过图形用户界面的管理工具&#xff0c;还可以用命令方式显示进程相关信息。像“Windows的任务管理器”一样&#xff0c;在RedHat 9中可以通过单击“系统工具”→“系统监视器”&#xff0c;…

linux pcie命令,setpci命令_Linux setpci 命令用法详解:查询和配置PCI设备的使用工具...

setpci命令是一个查询和配置PCI设备的使用工具。语法setpci(选项)(参数)选项-v&#xff1a;显示指令执行的细节信息&#xff1b;-f&#xff1a;当没有任何操作需要完成时&#xff0c;不显示任何信息&#xff1b;-D&#xff1a;测试模式&#xff0c;并不真正将配置信息写入寄存器…

linux proc文件 write的原子性,Linux命令之write调用的原子性

linux命令是对Linux系统进行管理的命令。本文介绍的关于linux命令中write调用的原子性的详细描述&#xff0c;具体内容如下所述。UNIX环境高级编程中关于原子操作的介绍&#xff0c;其中有一种情形是在文件尾端添加数据。文中说&#xff0c;如果多个进程都需要将数据添加到某一…

linux 命令行 迅雷替代,Mac/Linux下迅雷替代方案

还记得我两年前写的《DIY了家用NAS》吗&#xff1f;现在又带来新的升级啦。当初的NAS最多能使用Transmission来进行BT下载&#xff0c;那时就在想&#xff0c;如果能下载普通的http资源就好了。再进一步&#xff0c;有什么方案可以通吃所有下载方式呢&#xff1f; 记得那个时候…