Я хочу буферизовать аудио (mp3) для приложения, созданного с помощью React и Symfony4.Проблема, с которой я столкнулся, заключается в том, что, когда я вставляю src в тэг Audio HTML5, мне нужно подождать окончания загрузки, прежде чем воспроизводить аудио.
Полагаю, мне нужно отправить ответ StreamedResponse вместо ответа.Я хочу что-то подобное http://opensource.box.com/spout/guides/symfony-stream-content-large-spreadsheet/, но в моем случае всегда загружайте полный файл, он не буферизируется.
Я сделал этот код https://gitlab.com/nitsuga1986/media-buffer. Вы можете проверить это здесь: https://www.opoque.com/prueba/sample.html
И это работает хорошо, но, если вы проверите код, у тега есть index.php в src, но, поскольку я использую Symfony 4, я не могу этого сделать, я могу только добавитьв src что-то вроде:
<audio src="www.example.com/api/id_file=2" />
Я создал новый маршрут для получения идентификатора файла, и внутри него я создаю StreamedResponse, но, как я уже говорил, файлзагрузите полностью.
Это мой метод управления:
/**
* @Rest\Get("/v1/audio/{id}.{_format}", name="audio_download",
*
* @SWG\Tag(name="Files")
*/
public function downloadAudioAction(Request $request, $id) {
$serializer = $this->get('jms_serializer');
$em = $this->getDoctrine()->getManager();
$theme = [];
$message = "";
$response = new StreamedResponse();
$response->setCallback(function () {
$handle = fopen($id, 'r');
while (!feof($handle)) {
$buffer = fread($handle, 1024);
echo $buffer;ob_flush();
flush();
}
fclose($handle);
});
$response->send();
}
Как я могу добавить эту функцию для буферизации аудио?
заранее спасибо