php 截取音频文件后缀名,使用PHP从音频流中提取音轨信息
這是一個(gè)PHP功能,讓您從流媒體URL中提取MP3元數(shù)據(jù)(StreamTitle)。
通常,流服務(wù)器icy-metaint在響應(yīng)中放置一個(gè)標(biāo)題,告訴我們在流中發(fā)送元數(shù)據(jù)的頻率。該函數(shù)檢查該響應(yīng)頭,如果存在,它將用它替換interval參數(shù)。
否則,該函數(shù)調(diào)用關(guān)于您的間隔的流式URL,如果沒有任何元數(shù)據(jù),則它會再次嘗試從offset參數(shù)開始的遞歸。<?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));
我希望這有幫助!
總結(jié)
以上是生活随笔為你收集整理的php 截取音频文件后缀名,使用PHP从音频流中提取音轨信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑硬盘怎么下 电脑硬盘如何下载
- 下一篇: sqli-lab——Writeup(38