Воспроизведение аудио только HLS (m3u8) и MPEG DASH (mpd)

Каков наилучший способ воспроизведения HLS с резервным аудиопотоком MPEG DASH. m3u8 хорошо работает в Safari, но не работает в Chrome, насколько я понимаю.

  <video controls="true">
      <source type="video/mp4" src="http://example.com:8080/dash-audio/77PL4KA42.mpd" />
      <source type="application/x-mpegurl" src="http://example.com:8080/hls-audio/EU9TVX1D9.m3u8" />
  </video>

person Ben    schedule 19.02.2014    source источник


Ответы (2)


К сожалению, лучшего способа нет.

Битва за форматы кодирования видео (и аудио) все еще продолжается, и это тот случай, когда это показывает эффект: в одном браузере работает, а в другом нет.

В настоящее время «лучший способ» - предоставить видео в различных форматах, таких как mp4, webm, ogg video, и вы можете дополнительно предоставить формат потока m3u8. Вы можете выбрать приоритет того формата, который вы хотите прочитать (если возможно), по порядку исходных тегов (первый тег будет иметь первый pri - если он не может быть воспроизведен, будет предпринят следующий и так далее).

Существуют бесплатные конвертеры, которые могут конвертировать ваши видео в пакетном режиме, но они поддерживают только самые распространенные форматы (за исключением m3u8).

Если вам нужен только звук, то я думаю, что тег <audio> лучше подходит :-)

person Community    schedule 22.02.2014
comment
Тег audio не поддерживает потоковое аудио в реальном времени, хотя я прав? Это интересный район. - person Ben; 24.02.2014
comment
@Ben Не непрерывный поток нет. Вероятно, вы могли бы смоделировать что-то для подачи звука в качестве поддельного потока камеры и использовать WebRTC для потоковой передачи аудиочасти, но это не так элегантно, IMO (и немного сложно из-за начальных переговоров, требований к серверу и т. д.). - person ; 24.02.2014

Вы можете использовать библиотеку hls.js (https://github.com/video-dev/hls.js), чтобы потоки HLS воспроизводились в браузерах, которые изначально не поддерживают HLS, таких как Chrome и Firefox. Вот фрагмент для минимальной настройки (взято непосредственно из предоставленной ссылки)

<script src="https://cdn.jsdelivr.net/hls.js/latest/hls.min.js"></script>
<video id="video"></video>
<script>
  if(Hls.isSupported()) {
    var video = document.getElementById('video');
    var hls = new Hls();
    hls.loadSource('http://www.streambox.fr/playlists/test_001/stream.m3u8');
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED,function() {
      video.play();
  });
 }
</script>

person ami91    schedule 19.04.2017