[英]How to get the size and duration of an mp3 file?
我需要计算一个 mp3 文件的总长度。
目前我正在使用一个 PHP 类,我发现它 @ http://www.zedwood.com/article/php-calculate-duration-of-mp3 。
如果 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%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);
?>
以下是使用 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()
实际上有一个可以在客户端运行的库,试图获取足够的 MP3 来读取 ID3 标签:
http://github.com/aadsm/JavaScript-ID3-Reader
或
试试
HTML 文件 API。
也许最简单的解决方案是使用音频 html 元素来获取持续时间并直接从 FileReader 对象返回的文件中获取大小。 这种方法的代码示例如下所示。
一个不利的一面是目前为止提出的所有其他解决方案是音频标签的 durationchanged 事件在加载大文件(例如 > 200MB 文件)时触发所需的 10-20 秒延迟。 显然,有一种更快的方法可以获取此信息,因为当文件作为 file:///.... 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);
});
由于无法找到快速且不需要一堆额外样板代码的东西,我调整了现有的服务器端 javascript 实用程序以直接在浏览器中运行。 演示代码位于: https : //github.com/eric-gilbertson/fast-mp3-duration
一个非常有名的SPI,可以使用MP3 SPI ,代码也很简单
File file = new File("filename.mp3");
AudioFileFormat baseFileFormat = AudioSystem.getAudioFileFormat(file);
Map properties = baseFileFormat.properties();
Long duration = (Long) properties.get("duration");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.