Как обсуждалось в предыдущем вопросе, я создал прототип (используя веб-API MVC, NAudio и NAudio.Lame), который транслирует в реальном времени звук низкого качества после преобразования его в mp3. Исходный поток - PCM: 8K, 16-бит, моно, и я использую аудио-тег html5.
В обоих Chrome и IE11 есть задержка 15–34 секунды (высокая задержка), прежде чем звук будет слышен из браузера, что, как мне сказали, неприемлемо для наших конечные пользователи. В идеале задержка не должна превышать 5 секунд. Задержка возникает даже при использовании атрибута preload = "none" в моем аудио теге.
Если присмотреться к проблеме более внимательно, похоже, что оба браузера не начнут воспроизводить звук, пока они не получат ~ 32 КБ аудиоданных. Имея это в виду, я могу повлиять на задержку, изменив настройку битрейта MP3 Lame. Однако, если я уменьшу задержку (отправив больше данных в браузер для той же длины звука), я введу пропадание звука позже.
Примеры:
- Если я использую кодировку Lame V0, задержка составляет почти 34 секунды, что требует почти 0,5 МБ исходного звука.
- Если я использую кодировку Lame ABR_32, я могу уменьшить задержку до 10-15 секунд, но я буду испытывать паузы и пропадания во время сеанса прослушивания.
Вопросы:
- Есть идеи, как минимизировать задержку запуска (задержку)?
- Стоит ли мне продолжить изучение различных пресетов Lame в надежде выбрать «правильный»?
- Может быть, MP3 - не лучший формат для прямой потоковой передачи?
- Помогло бы переключение на Ogg / Vorbis (или Ogg / OPUS)?
- Нужно ли нам отказаться от тега аудио HTML5 и использовать Flash или Java-апплет?
Спасибо.