Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取mp3文件的长度_Php_Audio_Mp3 - Fatal编程技术网

Php 获取mp3文件的长度

Php 获取mp3文件的长度,php,audio,mp3,Php,Audio,Mp3,用户上传mp3文件,我需要得到它们的长度。在PHP中最省力的方法是什么?我所说的最少的努力,是指以任何方式都需要最少的代码和尽可能少的非本机PHP函数 我尝试实现下面答案中建议的代码: <?PHP $f = 'numbers/4.mp3'; $m = new mp3file($f); $a = $m->get_metadata(); if ($a['Encoding']=='Unknown') echo "?"; else if ($a['Encoding']=='VBR'

用户上传mp3文件,我需要得到它们的长度。在PHP中最省力的方法是什么?我所说的最少的努力,是指以任何方式都需要最少的代码和尽可能少的非本机PHP函数

我尝试实现下面答案中建议的代码:

<?PHP
$f = 'numbers/4.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);
?>

我该如何解决这个问题?

试着使用这个getduration函数:

你是说播放长度?因为
filesize()
会获取字节长度。如果它们是VBR mp3,那么计算播放时间的唯一方法就是扫描整个文件并计算有多少mp3帧。是的,我指的是播放长度。如何计算帧数?将您在该页面上看到的类代码保存在
mp3file.php
中,并且
在代码之前包含“mp3file.php”
。认真地这就是当一个对PHP一无所知的人在没有任何基础知识的情况下跳到最深处时所得到的结果。先读一本PHP书。它是由页面组成的,可以教你一些东西。如果您不知道出现错误的原因,则需要一本书。扫描文件并检测帧。它们具有特定的位模式。假设文件是纯mp3数据,而不是mpeg视频中的mp3或其他内容,一旦找到第一帧,找到其余帧只需计算出帧大小并向前跳转那么多字节即可。感谢所有有用的评论!更新了我试图实现建议代码的问题。您必须下载并包含
mp3file.class.php
。请阅读我的建议页面,最后问:菲,这对你有用吗?我试过mp3file.class.php,不知怎的,我得到的持续时间并不准确。现在我想我应该数一数帧,然后乘以0.026秒。谢谢。你帮我节省了很多时间。
Fatal error: Class 'mp3file' not found in /home/a1865444/public_html/save-audio.php on line 3