Files
ggwave/examples/ggwave-to-file/ggwave-to-file.php
Georgi Gerganov b1175ce17c ggwave-to-file : http service now produces mp3 files
The .wav files could not play on most Apple software
2021-01-16 09:32:32 +00:00

61 lines
1.4 KiB
PHP

<?php
$cmd = "ggwave-to-file";
if (isset($_GET['s'])) { $cmd .= " -s".intval($_GET['s']); }
if (isset($_GET['v'])) { $cmd .= " -v".intval($_GET['v']); }
if (isset($_GET['p'])) { $cmd .= " -p".intval($_GET['p']); }
$descriptorspec = array(
0 => array("pipe", "r"),
//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)) {
$message = $_GET['m'];
fwrite($pipes[0], $message);
fclose($pipes[0]);
//$result = stream_get_contents($pipes[1]);
//fclose($pipes[1]);
$log = stream_get_contents($pipes[2]);
fclose($pipes[2]);
$return_value = proc_close($process);
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-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-Range: bytes 0-".$size."/".$size);
echo $result;
}
}
unlink($path_mp3);
unlink($path_wav);
?>