2016-02-02 12 views
1

Я пытаюсь встроить аудиотекст html5 на странице, чтобы можно было воспроизводить живой поток AAC +, поступающий с сервера Icecast.Как играть в потоке AAC в реальном времени на Android с аудиоэлементом html5

В соответствии с media formats developer's guide, Android поддерживает воспроизведение нескольких ароматов AAC, либо внутри контейнера MPEG-4, либо в ADTS.

Я успешно играл AAC-кодированные файлы в формате MPEG-4 контейнера, таким образом:

<audio controls="controls"> 
    <source src="http://www.example.com/audio/program1.mp4" type="audio/mp4"/> 
</audio> 

Однако, я не был в состоянии играть любой AAC живой поток (который, насколько я понимаю, , выводится Icecast с использованием ADTS) со звуковым тегом. Я попытался установить разные типы (например, «audio/aac», которые, по словам игрока, могут «вероятно» играть), а также различные расширения файлов для URL-адреса потока. Ничего не работает. Игрок, между прочим, инициализируется так, как будто все в порядке, а затем при нажатии кнопки воспроизведения ничего не происходит (кроме кнопки воспроизведения, меняющейся на значок паузы).

Единственный способ, которым я смог воспроизвести поток AAC в реальном времени, - это использовать URL-адрес, указывающий на манифест .sdp, содержащий ссылку на версию потока RTSP. Затем браузер передает поток в собственный аудиоплеер или другое аудио приложение, которое воспроизводит его после короткого периода буферизации. Для нас это не вариант, поскольку мы хотели бы использовать простой сервер Icecast для нашего потока.

Есть ли способ играть в прямом эфире AAC на Android через HTTP? Кажется, iOS поддерживает его, но не Android.

+0

Не могли бы вы проверить и убедиться, какой формат выдает AAC Icecast? – Danijel

+0

Это руководство для разработчиков относится к использованию Android SDK (имеет собственные функции медиаплеера) и не применяется к тегу HTML-видео.Ваша личная ссылка AAC (с ADTS) работает на Android, если вы используете ** [это демо] (http://project.wnyc.org/test/issues/streamtest/#http://cdn.audiopump.co/ radioreddit/main_heaac_64k) **? Также о смене кнопки воспроизведения ... возможно ли, что вам нужно подождать немного для загрузки буфера, чтобы заполнить? И нет никаких ограничений в отношении интернет-данных (например, без массовой потоковой передачи мультимедиа)? –

+0

@ Danijel: Вот что сообщает ffprobe для потока AAC: 'Duration: N/A, bitrate: 63 kb/s; Stream # 0: 0: Audio: aac (HE-AACv2), 44100 Гц, стерео, fltp, 63 kb/s' – EK0

ответ

0

Из-за отсутствия ответов об обратном, я должен сделать вывод, что ответ на исходный вопрос: «Нет, нельзя использовать аудиотекст HTML5 для воспроизведения живого потока AAC + с сервера Icecast», ,

Я отправляю ответ, чтобы поделиться тем, что я закончил делать.

Моим первым наклонением было просто настроить второй поток Icecast с использованием MP3 вместо AAC. Это будет работать, но вы должны согласиться с задержкой буферизации, которую вводит аудиоплеер Android с потоками MP3. К сожалению, на 64 kpbs Android заставит вас ждать более 40 секунд, прежде чем он начнет воспроизведение MP3-потока. По общему признанию, 64 kpbs не очень хорошего качества для MP3, но даже при скорости 128 кбит/с буферизация занимает более 20 секунд, что достаточно для слушателей сделать вывод о том, что поток не работает. Так что MP3 не является для нас вариантом.

Моим возможным решением было попросить наш CDN добавить приложение Wowza, которое вытаскивает из потока AAC + Icecast и транслирует его с использованием HLS.

Теперь мой аудио тег выглядит следующим образом:

<audio controls="controls"> 
    <source src="http://www.example.com/wowza/stream.m3u8"/> 
    <source src="http://www.example.com/audio/aac"/> 
</audio> 

Обратите внимание, что я должен был перечислить источник HLS первым, потому что в противном случае Android устройство будет на самом деле выбрать поток Icecast и попытаться воспроизвести его, что он может 't (вы думаете, что это будет достаточно знать, чтобы не делать этого).

Так что в конце концов Android действительно играет живой поток AAC + без задержки, пока он доставляется через HLS, а не непосредственно из Icecast. Должен сказать, я был очень разочарован Android, и отсутствие поддержки прямого Icecast AAC +, и его плохое управление потоками в реальном времени, особенно потому, что конкуренция (iOS) обрабатывает все, что вы бросаете на нее, не моргая.

+0

Почему вы не просто используете HLS-сервер вместо icecast? преднамеренно HLS-сервер является простым зверьком, тогда как клиентская сторона HLS - это то место, где происходит вся магия –

+0

Извините за поздний ответ. Icecast на самом деле является требованием/предпочтением некоторых наших пользователей потока (услуги, которые распространяют наши потоки через их веб-сайты и/или приложения). Тем временем, я тестировал это недавно, и кажется, что Android теперь без проблем работает как в AAC +, так и в MP3-потоках. Я обновлю этот вопрос, когда у меня появится шанс это подтвердить. – EK0

+0

Что касается моего предыдущего комментария: кажется, браузер Chrome на Android играет без проблем в AAC + и MP3 в прямом эфире. Собственный браузер Android по-прежнему не будет воспроизводить AAC +, и он будет воспроизводить MP3 только после буферизации в течение длительного времени; поэтому в этом отношении ничего не изменилось. – EK0

 Смежные вопросы

  • Нет связанных вопросов^_^