我需要计算一个mp3文件的总长度。
目前我正在使用我发现@ http://www.zedwood.com/article/php-calculate-duration-of-mp3。
的PHP类如果同一服务器中的mp3文件,这种方法非常有效。
但如果我有来自其他网站的网址则会抛出错误。请帮帮我。
是否有任何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%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);
?>
答案 0 :(得分:3)
答案 1 :(得分:2)
也许最简单的解决方案是使用audio html元素获取持续时间并直接从FileReader对象返回的文件中获取大小。这种方法的代码示例如下所示。
此方法和到目前为止提出的所有其他解决方案的一个缺点是,加载大的文件(例如> 200MB文件)时,音频标签的durationchanged事件触发需要10-20秒的延迟。显然,有一种更快的方式来获取此信息,因为当文件以文件:///..URL的形式输入浏览器时,持续时间会立即显示。
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);
});
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以使用的着名和非常SPI MP3 SPI 而且代码也很简单
File file = new File("filename.mp3");
AudioFileFormat baseFileFormat = AudioSystem.getAudioFileFormat(file);
Map properties = baseFileFormat.properties();
Long duration = (Long) properties.get("duration");
答案 4 :(得分:0)
以下是使用Web Audio API获取mp3持续时间的方法:
const mp3file = 'https://raw.githubusercontent.com/prof3ssorSt3v3/media-sample-files/master/doorbell.mp3'
const audioContext = new (window.AudioContext || window.webkitAudioContext)()
const request = new XMLHttpRequest()
request.open('GET', mp3file, true)
request.responseType = 'arraybuffer'
request.onload = function() {
audioContext.decodeAudioData(request.response,
function(buffer) {
let duration = buffer.duration
console.log(duration)
document.write(duration)
}
)
}
request.send()
答案 5 :(得分:0)
由于无法找到快速且不需要大量额外样板代码的内容,我调整了现有的服务器端javascript实用程序以直接在浏览器中运行。演示代码位于:https://github.com/eric-gilbertson/fast-mp3-duration