2012-04-06 16 views
1

Ich füge mehrere Audiodateien (.wav) über diese Funktion zusammen, aber jetzt möchte ich die Bitrate der Ausgabedatei angeben. Was soll ich machen?So stellen Sie die Bitrate in dieser PHP-Funktion zum Zusammenführen von Audiodateien ein

function joinwavs($wavs) { 
    $fields = join('/', array('H8ChunkID', 'VChunkSize', 'H8Format', 
     'H8Subchunk1ID', 'VSubchunk1Size', 
     'vAudioFormat', 'vNumChannels', 'VSampleRate', 
     'VByteRate', 'vBlockAlign', 'vBitsPerSample')); 
    $data = ''; 
    foreach ($wavs as $wav) { 
     $wav = str_replace('http://example.com/', '', $wav); 
     $fp = fopen($wav, 'rb'); 
     $header = fread($fp, 36); 
     $info = unpack($fields, $header); 
     // read optional extra stuff 
     if ($info['Subchunk1Size'] > 16) { 
      $header .= fread($fp, ($info['Subchunk1Size'] - 16)); 
     } 
     // read SubChunk2ID 
     $header .= fread($fp, 4); 
     // read Subchunk2Size 
     $size = unpack('vsize', fread($fp, 4)); 
     $size = $size['size']; 
     // read data 
     $data .= fread($fp, $size); 
    } 
    return ($header . pack('V', strlen($data)) . $data); 
} 
+0

Ich frage mich nur: Warum hast du PHP gewählt, um Audiodateien zu verarbeiten? –

Antwort

0

Verwenden Sie hierzu FFMPEG. Bearbeiten Sie die Audiodateien nicht direkt, insbesondere wenn Sie mehr tun als nur Dateien aneinanderreihen.

Sie können entweder FFMPEG direkt ausführen oder die PHP extension verwenden. Persönlich habe ich die exec() Route viel einfacher gefunden.