Javascript 如何获取mp3文件的大小和持续时间?
我需要计算mp3文件的总长度 目前我正在使用一个我发现@的PHP类 如果mp3文件在同一台服务器上,这是完美的工作 但如果我有一个来自其他网站的URL,它就会抛出错误。请帮帮我 是否有JavaScript J-Query函数来获取mp3文件的长度Javascript 如何获取mp3文件的大小和持续时间?,javascript,php,jquery,Javascript,Php,Jquery,我需要计算mp3文件的总长度 目前我正在使用一个我发现@的PHP类 如果mp3文件在同一台服务器上,这是完美的工作 但如果我有一个来自其他网站的URL,它就会抛出错误。请帮帮我 是否有JavaScript J-Query函数来获取mp3文件的长度 <?php include("mp3.class.php"); $f = 'http://cdn.enjoypur.vc/upload_file/5570/5738/5739/7924/Blue%20Eyes%20-%20Yo%20Yo%20Ho
<?php include("mp3.class.php");
$f = 'http://cdn.enjoypur.vc/upload_file/5570/5738/5739/7924/Blue%20Eyes%20-%20Yo%20Yo%20Honey%20Singh%20(PagalWorld.com)%20-192Kbps%20.mp3';
$m = new mp3file($f);
$a = $m->get_metadata();
if ($a['Encoding']=='Unknown')
echo "?";
else if ($a['Encoding']=='VBR')
print_r($a);
else if ($a['Encoding']=='CBR')
print_r($a);
unset($a);
?>
实际上有一个库可以在客户端运行,试图获取足够的MP3来读取ID3标签: 或 试一试 HTML文件API 使用同样适用于VBR文件的
getID3()
PHP库
此链接可帮助您
它在开发中非常活跃。您可以使用的一种著名且非常实用的SPI 代码也非常简单
File file = new File("filename.mp3");
AudioFileFormat baseFileFormat = AudioSystem.getAudioFileFormat(file);
Map properties = baseFileFormat.properties();
Long duration = (Long) properties.get("duration");
以下是使用Web Audio API获取mp3持续时间的方法:
const mp3file='0https://raw.githubusercontent.com/prof3ssorSt3v3/media-sample-files/master/doorbell.mp3'
const audioContext=new(window.audioContext | | window.webkitadiocontext)()
const request=new XMLHttpRequest()
request.open('GET',mp3file,true)
request.responseType='arraybuffer'
request.onload=函数(){
audioContext.decodeAudioData(请求.响应,
功能(缓冲区){
let duration=buffer.duration
console.log(持续时间)
文件写入(持续时间)
}
)
}
request.send()
也许最简单的解决方案是使用audio html元素获取持续时间,并直接从FileReader对象返回的文件中获取大小。这种方法的代码示例如下所示
到目前为止,此解决方案和所有其他解决方案的一个缺点是,加载大文件(如大于200MB的文件)时,音频标签的durationchanged事件触发需要10-20秒的延迟。显然,有一种更快的方法可以获取此信息,因为当文件作为一个文件输入浏览器时,持续时间会立即显示file:///.... 网址
function checkMp3SizeAndDuration()
{
var files = document.getElementById('upload-file').files;
var file = files[0];
if (file.size > MAX_FILE_SIZE) {
return;
}
var reader = new FileReader();
var audio = document.createElement('audio');
reader.onload = function (e) {
audio.src = e.target.result
audio.addEventListener('durationchange', function() {
console.log("durationchange: " + audio.duration);
},false);
audio.addEventListener('onerror', function() {
alert("Cannot get duration of this file.");
}, false);
};
reader.readAsDataURL(file);
});
由于找不到快速且不需要一堆额外样板代码的东西,我调整了现有的服务器端javascript实用程序,使其直接在浏览器中运行。演示代码位于:是否有可能快速解决wav问题的方法?MP3文件的持续时间通常存储在ID3标签中,必须通过扫描所有音频帧来计算。