Я пытаюсь обслуживать некоторый видеоконтент с веб-сервера с намерением поддерживать достаточно широкий набор браузеров.
Для iOS, насколько я могу судить, нужно использоватьHLS (HTTP Live Streaming), тогда как на настольном компьютере (и я полагаю, Android?) MPEG-DASH - это современный уровень.В качестве запасного варианта я могу предоставить несколько статичных видео.
У меня это работает на iOS с HLS и Chrome, Firefox, Opera и Edge на рабочем столе, но Safari на Mac просто показывает вращатель активности, когда яНажмите кнопку PLAY.Насколько я могу судить, это потому, что Safari пытается и не может использовать DASH в качестве метода воспроизведения, несмотря на отсутствие поддержки Webm и HLS, перечисленных в списке первым.
Для MPEG-DASH я использовал Webm с VP9 и Opusи мой тег <video>
выглядит примерно так:
<video controls style="display:inline-block;max-width:174.22vh;max-height:98vh;width:98vw;height:55.125vw;background-color:#ccc;" preload="auto" poster="my-preview-image.jpg" data-dashjs-player>
<source src="myvideo/hls/playlist.m3u8" type="application/x-mpegURL">
<source src="myvideo/dash/manifest.mpd" type="application/dash+xml">
<source src="myvideo/myvideo-vp9.webm" type="video/webm; codecs=vp9,opus">
<source src="myvideo/myvideo-vp8.webm" type="video/webm; codecs=vp8,vorbis">
<source src="myvideo/myvideo-h264.m4v" type="video/mp4; codecs=h264,aac">
</video>
И я просто импортирую эталонную реализацию DASH, используя
<script src="dash.all.min.js"></script>
Я генерирую потоки HLS и DASHиспользуя ffmpeg
из высококачественного мастер-видео, экспортированного из Final Cut Pro.Статические резервные файлы Webm также создаются с использованием ffmpeg
, в то время как статический резервный файл H264 представляет собой экспорт с более низкой скоростью передачи битов из Final Cut Pro.
Есть ли способ, которым я могу либо:
- Скажите DASH соблюдать порядок источников и не переходить вперед от потока HLS
- Или не вставлять, если
video/webm; codecs=vp9,opus
не поддерживается браузером.
Наконец, если ни один из них не возможен, могу ли я поддерживать несколько разных кодеков одновременно с DASH?то есть я могу предоставить потоки DASH VP9 и H264 и выбрать VP9 вместо H264, где это поддерживается, и в противном случае вернуться к H264 (с более высоким битрейтом или более низким качеством)?Как бы я начал создавать данные этого потока?