PHP将两个MP3文件进行合并,可以多个MP3文件合并
以下代码是基于PHP 7.x 的,版本小于7.x 的请自行将 代码中的__construct 改为 mp3
<?php
class mp3 {
var $str;
var $time;
var $frames;
// Create a new mp3
function __construct($path="") {
if($path!="") {
$this->str = file_get_contents($path);
}
}
// Put an mp3 behind the first mp3
function mergeBehind($mp3) {
$this->str .= $mp3->str;
}
// Calculate where's the end of the sound file
function getIdvEnd() {
$strlen = strlen($this->str);
$str = substr($this->str,($strlen-128));
$str1 = substr($str,0,3);
if(strtolower($str1) == strtolower('TAG')) {
return $str;
} else {
return false;
}
}
// Calculate where's the beginning of the sound file
function getStart() {
$strlen = strlen($this->str);
for ($i=0;$i<$strlen;$i++) {
$v = substr($this->str,$i,1);
$value = ord($v);
if($value == 255) {
return $i;
}
}
}
// Remove the ID3 tags
function striptags() {
//Remove start stuff...
$newStr = '';
$s = $start = $this->getStart();
if($s===false) {
return false;
} else {
$this->str = substr($this->str,$start);
}
//Remove end tag stuff
$end = $this->getIdvEnd();
if($end!==false) {
$this->str = substr($this->str,0,(strlen($this->str)-129));
}
}
// Display an error
function error($msg) {
//Fatal error
die('<strong>audio file error: </strong>'.$msg);
}
// Send the new mp3 to the browser
function output($path) {
//Output mp3
//Send to standard output
if(ob_get_contents())
$this->error('Some data has already been output, can\'t send mp3 file');
if(php_sapi_name()!='cli') {
//We send to a browser
header('Content-Type: audio/mpeg3');
if(headers_sent())
$this->error('Some data has already been output to browser, can\'t send mp3 file');
header('Content-Length: '.strlen($this->str));
header('Content-Disposition: attachment; filename="'.$path.'"');
}
echo $this->str;
return '';
}
//Save MP3
function saveMp3($filename) {
$myfile = fopen($filename, "w") or die("Unable to open file!");
fwrite($myfile, $this->str);
fclose($myfile);
}
}
// First File: (Google speech)
$mp3 = new mp3('1.mp3');
$mp3->striptags();
//Second file
$second = new mp3("2.mp3");
$mp3->mergeBehind($second);
$mp3->striptags();
//$mp3->output('word.mp3'); 下载文件
$mp3-saveMp3('word.mp3'); //保存文件
?>


