Обслуживание аудиоданных из сервлета Java для управления звуком HTML5
Это может быть вопрос сервлетов или вопрос HTML5, в зависимости от того, какое решение окажется...:)
У меня есть (Tomcat) Servlet, подающий короткие клипы, которые затем записываются в аудиоэлемент HTML5. Звук корректно воспроизводится, но в некоторых браузерах только один раз (так что попытка "перемотать" или воспроизвести звук не сработает). Я подозреваю, что это потому, что мой сервлет не сообщает, что он поддерживает запросы диапазона: я замечаю, что при наличии статического аудиофайла на том же сервере Apache добавляет HTTP-заголовок ответа "range-unit", и воспроизведение файла затем работает таким образом. случаев. Поэтому я предполагаю, что в браузерах, где у меня возникла проблема, чтобы воспроизвести файл, браузер делает запрос HTTP Content-Range, а не буферизирует весь файл или повторно запрашивает весь файл. (По крайней мере, в Safari воспроизведение звука, подаваемого из моего сервлета, работает нормально: я полагаю, потому что Safari буферизирует весь звук.)
Итак, мои вопросы:
Есть ли способ в HTML запросить, чтобы браузер буферировал весь аудиофайл при воспроизведении, чтобы разрешить повторы, а не сервер, необходимый для поддержки запросов диапазона?
если нет, есть ли у кого-нибудь опыт реагирования на запросы диапазона от сервлета? Я предполагаю, что это всего лишь случай (а) отправки кода ответа "единица измерения диапазона" в ответ на первоначальный запрос, а затем (б) поиска соответствующих заголовков HTTP-запроса ("Content-Range?") (Я полагаю, вот как они обрабатываются?) при последующих запросах и только при подаче соответствующей части аудио? Есть ли какие-либо подводные камни, о которых я должен знать?
1 ответ
Есть ли способ в HTML запросить, чтобы браузер буферировал весь аудиофайл при воспроизведении, чтобы разрешить повторы, а не сервер, необходимый для поддержки запросов диапазона?
Даже если он есть, он не будет поддерживаться во всех браузерах, особенно на мобильных устройствах / iPad / и т. Д.
У кого-нибудь есть опыт ответа на запросы диапазона от сервлета?
Есть реализация, предоставленная BalusC. Я перенес его в свою среду, и, за исключением некоторых мелких проблем(которые, скорее всего, не связаны с реализацией, но со спецификой на стороне клиента), он прекрасно работает.