From b1175ce17c1955fe1dccf8a4383c1352f65b7b0a Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Sat, 16 Jan 2021 09:32:32 +0000 Subject: [PATCH] ggwave-to-file : http service now produces mp3 files The .wav files could not play on most Apple software --- examples/ggwave-to-file/ggwave-to-file.php | 29 +++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/examples/ggwave-to-file/ggwave-to-file.php b/examples/ggwave-to-file/ggwave-to-file.php index 5976ad1..206b704 100644 --- a/examples/ggwave-to-file/ggwave-to-file.php +++ b/examples/ggwave-to-file/ggwave-to-file.php @@ -8,10 +8,15 @@ if (isset($_GET['p'])) { $cmd .= " -p".intval($_GET['p']); } $descriptorspec = array( 0 => array("pipe", "r"), - 1 => array("pipe", "w"), + //1 => array("pipe", "w"), 2 => array("pipe", "w"), ); +$path_wav = tempnam("/tmp", "ggwave"); +$path_mp3 = $path_wav.".mp3"; + +$cmd .= " > $path_wav"; + $process = proc_open($cmd, $descriptorspec, $pipes); if (is_resource($process)) { @@ -20,24 +25,36 @@ if (is_resource($process)) { fwrite($pipes[0], $message); fclose($pipes[0]); - $result = stream_get_contents($pipes[1]); - fclose($pipes[1]); + //$result = stream_get_contents($pipes[1]); + //fclose($pipes[1]); $log = stream_get_contents($pipes[2]); fclose($pipes[2]); $return_value = proc_close($process); - if (strlen($result) == 0) { + exec("ffmpeg -i ".$path_wav." ".$path_mp3); + + $result = file_get_contents($path_mp3); + $size = filesize($path_mp3); + + if ($size == 0) { header('Content-type: text/plain'); echo $log; } else { - header('Content-Disposition: attachment; filename="output.wav"'); + //header("Content-Type: audio/wav"); + header("Content-Type: ". mime_content_type($path_mp3)); + header("Content-Length: $size"); + header("Accept-Ranges: bytes"); + header('Content-Disposition: inline; filename="output.wav"'); header("Content-Transfer-Encoding: binary"); - header("Content-Type: audio/wav"); + header("Content-Range: bytes 0-".$size."/".$size); echo $result; } } +unlink($path_mp3); +unlink($path_wav); + ?>