Я несколько дней ломал голову над этим,
Я создаю веб-приложение для клиента, связанного с отслеживанием вызовов.Одним из аспектов системы является возможность воспроизведения записанных коротких сообщений голосовой почты непосредственно с помощью кнопки «Воспроизвести» рядом с деталями сообщения.
Я получаю доступ к звуковым файлам как таковым;
$wavefile=$calls_row['recording'];
if (file_exists("/var/spool/asterisk/monitor/".$calls_row['recording'].".wav")){
$wavefile="
<form>
<input type=\"button\" value=\"Play\" onClick=\"PlaySound('clip-".$stat_id."')\" />
</form>
<embed src=\"pass-thru.php?f=".$calls_row['recording'].".wav\" autostart=\"false\" width=\"0\" height=\"0\" id=\"clip-".$stat_id."\" enablejavascript=\"true\" />
";
}
Аудиоклипы хранятся вне корневого каталога в каталоге, который, как мне сказали, мы не можем изменить.Будучи не в состоянии получить доступ к файлам локально, я собрал небольшой сценарий php для передачи файла обратно на мою веб-страницу.
В звуковом клипе используется небольшой фрагмент javascript для получения идентификаторассылка на указанный файл перед его воспроизведением;
function PlaySound(soundobj) {
var thissound=document.getElementById(soundobj);
thissound.Play();
}
Файлы доступны вне webroot и передаются в html по следующему php-коду:
$basedir = '/var/spool/asterisk/monitor';
$clip = $_GET['f'];
$file = $basedir.'/'.$clip;
$ext = array_pop(explode ('.', $file));
if(file_exists($file) && $ext != '' && isset($allowed[strToLower($ext)])) {
$type = $allowed[strToLower($ext)];
}
header("Content-type: audio/x-wav");
header("Content-Disposition: filename='{$file}'");
header("Content-Transfer-Encoding: binary");
header('Content-Length: ' . filesize($file));
readfile($file);
exit();
Все отлично работает какэто так, клипы передаются и звуковые клипы воспроизводятся в браузере.
Проблема в том, что все звуковые клипы загружаются в кеш при загрузке страницы, что, очевидно, немного замедляет работу.У меня результаты разбиты на страницы, поэтому загружается только 25 за раз, но я бы очень хотел, чтобы ссылки на звуковые клипы были доступны и загружались только при выборе для воспроизведения.
Любые идеи будут оценены по достоинству..