Reputation: 1199
I am new to PHP .I want to merge mp3 files into one mp3 file.i googled this query and found this code .It is working fine and give me back the merged file. But this code give me merged file as save file .but i want to save the merged file in a folder .so that i can give the URL of the file to some application.
class mp3{
var $str;
var $time;
var $frames;
// Create a new mp3
function mp3($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 '';
}
}
// 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'); //Output file (current a blank file)
The solution code will be very appreciate able ..Thanks in advance
Upvotes: 3
Views: 5579
Reputation: 8943
Add this method to your mp3 class.
// Save the new mp3 into the file system
function savefile($path){
return file_put_contents($path, $this->str);
}
Then to use it simply ... replace
$mp3->output('word.mp3'); //Output file (current a blank file)
with this
$mp3->savefile('/path/to/directory/file.mp3');
and make sure you modify the path to a real directory within your file system.
Upvotes: 2