这是一个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));

我希望这有帮助!

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

  1. c语言文件后缀名怎么隐藏起来,win10中怎样查看被隐藏的文件后缀名 win10显示文件后缀名的设置方法...

    win10是一款不错的操作系统,但是有很多刚装的用户有很多疑问,那么win10中怎样查看被隐藏的文件后缀名?下面小编带来win10显示文件后缀名的设置方法,希望对大家有所帮助. win10显示文件后缀 ...

  2. linux命令 截取文件后缀名,Shell截取文件名和后缀(转载)

    截取文件名和后缀 编写Shell脚本的过程中,经常会和文件名和文件路径打交道.如果用户输入了一个文件的全名(可能包含绝对路径和文件后缀),如何得到文件的路径名,文件名,文件后缀这些信息呢.Shell脚 ...

  3. 转--各种文件后缀名与打开方式大全

    各种文件后缀名与打开方式大全 .aiff 声音文件 Windows media Player .!!! Netants 暂存文件 Netants .ani 动画鼠标 .arj 压缩文件 ARJ .av ...

  4. 文件按照文件后缀名归类方案

    文件按照文件后缀名归类方案 import java.io.File; import java.io.FilenameFilter;public class TestFinal {public stat ...

  5. File类如何获取文件后缀名

    File类如何获取文件后缀名 /*** 获取指定文件或文件夹的后缀名* @param fileName 文件名称* @return*/public static String getFileSuffi ...

  6. 前端判断文件后缀名_JS 获取文件后缀,判断文件类型(比如是否为图片格式)

    1.获取文件后缀H3I免费资源网 有时候我们需要通过文件名或者路径,得到该文件的后缀名(扩展名),可以通过如下方式进行截取:H3I免费资源网 //文件路径 var filePath = "f ...

  7. 文件后缀名大全及其说明表

    文件后缀名大全及其说明表 转自:http://wf66.com/bbs/200410/35382.htm A 对象代码库文件 AAM Authorware shocked文件 AAS Authorwa ...

  8. 根据文件后缀名利用正则表达式区分文件格式

    上传功能在项目中经常用到,一般上传时要验证一下文件的格式是不是我们需要的.验证方法很多,而正则表达式经常会被用到. 比如我要上传的文件必须是图片格式,而且后缀名不区分大小写,可以这样写: // 根据名 ...

  9. 各种文件后缀名与打开方式大全a-d

    各种文件后缀名与打开方式大全a-d 2012年01月11日 [b]扩展名 文件类型 打开方式[/b][b] .aiff 声音文件[/b][b] Windows media Player .!!! Ne ...

最新文章

  1. 小程序在canvas上层做图片滚动
  2. CVPR 2020: 移动端机器学习的研究实现
  3. 前端自动化工具 grunt 插件 uglify 的简单使用(一)
  4. Could not find artifact com.sun:tools:jar:1.5.0 解决办法
  5. Channel SDK (渠道SDK) for Unity
  6. Windows计算机功能Java源码
  7. android studio n3710,英特尔奔腾N3710性能跑分和评测 | ZMMOO
  8. 【Shell教程】三----运算符,条件判断
  9. 快来被子里 看看我的夜光收钱码!
  10. win10 开机启动_win10 -- 取消不需要的开机启动项和服务项加快win10系统开机速度...
  11. 程序员应该写文档吗?
  12. C语言的红外计数程序,51单片机红外计数器 电路原理图+PCB+源程序等资料分享
  13. QTreeWidget支持双击编辑Item节点的内容
  14. 详细的568A和568B线序
  15. python 矩阵元素平方_NumPy之计算两个矩阵的成对平方欧氏距离
  16. 如何组织一个高效的开发团队
  17. C++ OpenCV 抠商标图片文字背景透明
  18. python中大于0怎么表示_python怎么筛选列表中大于0的数据?
  19. 相亲小程序如何做到年入百万?盈利模式是什么?
  20. Leetcode 684: 冗余连接 Redundant Connection

热门文章

  1. IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务
  2. javaScript PC端网页特效
  3. 虚拟服务器 端口管理,Apache服务配置虚拟主机(基于域名、端口、IP地址)与简单访问权限管理...
  4. android 各版本市占率,Android各版本市占率:果冻豆遥遥领先
  5. c语言指针怎样代替二维数组,c语言 指针和二维数组
  6. C语言 __cplusplus - C语言零基础入门教程
  7. Python chr / ord 函数区别和使用 - Python零基础入门教程
  8. BugkuCTF-MISC题random color
  9. java欧洲_java欧洲/明斯克时区问题
  10. mysql的存储引擎详解_MySQL常见存储引擎详解