Потоковое аудио с сервлетом Java в Google App Engine
Я пытаюсь создать в своем веб-приложении GAE Java URL-адрес, который позволяет потоковую передачу аудиофайла, но пока он работает только для прямой загрузки. Вот так выглядит мой сервлет для загрузки файла из BlobStore с BlobKey, отправленным в параметре "file_id":
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
BlobInfoFactory bif = new BlobInfoFactory();
BlobKey blobKey = new BlobKey(req.getParameter("file_id"));
String fileName = bif.loadBlobInfo(blobKey).getFilename();
res.setContentType("text/plain");
res.setHeader("Content-Disposition", "attachment; filename=" + fileName);
blobstoreService.serve(blobKey, res);
}
Сервлет сопоставляется с URL-адресом, который выглядит следующим образом: xxx.appspot.com/fileDownload?file_id=yyy
Как я могу получить доступ к этому URL на стороне клиента (браузер или мобильное приложение) для потоковой передачи аудиоданных вместо прямой загрузки? Должен ли я изменить сторону сервера, протокол стороны клиента для доступа к нему (вместо HTTP) или и то и другое?
Спасибо!
1 ответ
Проверьте, какие аудиоформаты поддерживаются определенными браузерами. Ваш лучший выбор будет mp3 аудио.
Используйте этот HTML-фрагмент на стороне клиента:
<audio controls> <source src="http://path/to/your/audio/file.mp3" type="audio/mpeg"> Your browser does not support the audio element. </audio>
Убедитесь, что ваш сервер обслуживает аудио файлы как
audio/mpeg
тип содержимого (также содержимое вашего блоба должно быть в формате mp3):res.setContentType("audio/mpeg");
Удалить
Content-Disposition
заголовок. Это используется, когда вы хотите, чтобы браузер сохранил файл на локальный диск.