Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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文件_Php_Mp3 - Fatal编程技术网

转换时下载PHP文件

转换时下载PHP文件,php,mp3,Php,Mp3,我需要一种方法来下载mp3文件,而从m4a转换为mp3 我尝试了这段代码,它是有效的,但是,当我播放这首歌时,它的持续时间是错误的,如果这首歌有3分钟的长度,那么当通过此函数下载时,它的持续时间是3:40左右 set_time_limit(0); $local_file = 'song.mp3'; $download_file = 'song.mp3'; if(file_exists($local_file) && is_file($local_file)) { header('

我需要一种方法来下载mp3文件,而从m4a转换为mp3

我尝试了这段代码,它是有效的,但是,当我播放这首歌时,它的持续时间是错误的,如果这首歌有3分钟的长度,那么当通过此函数下载时,它的持续时间是3:40左右

set_time_limit(0);
$local_file = 'song.mp3';
$download_file = 'song.mp3';
if(file_exists($local_file) && is_file($local_file)) {
header('Content-Description: file transfer');
header('Content-Disposition: attachment; filename='.$download_file);
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3"); 
$perSecond = 500000; 
$file = fopen($local_file, 'r');
while(!feof($file)) {
    echo fread($file, $perSecond);
    flush();
    sleep(11);
}

}

有没有办法做到这一点?谢谢大家!

是否可以改用流式传输文件?当用于非文本文件时,请使用b标志指定二进制模式:fopen$path,“rb”。

谢谢您的回答。事实上,如果我使用b标志的持续时间是好的,但在移动设备上不读取mp3文件,也像比特率标签丢失。。。我尝试了readfile,但只读取了converted@Marius没有比特率标签。比特率可以每帧更改,并存储在MPEG帧头中。从m4a转换为mp3为什么要这样做?如果可以的话,你不应该从一种有损的格式转换成另一种有损的格式。您正在进一步降低质量,添加更多工件。更糟糕的是,您正在对一个特别糟糕的编解码器进行处理。大多数东西都支持AAC,为什么在转换时要转到MP3?文件?转换过程发生在哪里?多个内容类型值是什么?您只需要音频/mpeg。谢谢您的回答,我有一个网站,允许您将视频/其他格式转换为mp3。转换是使用专用服务器上的shell_exec进行的。我找到了一种方法,在运行中进行转换。我想要mp3,因为人们使用它比其他格式更多,例如,在我的车里m4a不起作用,我有一个非常好的播放器。如果你正在进行转换,并且丢失了数据,可能转换还没有完成?