Что такое MPEG-DASH, зачем нужен MP4box, и как лучше хранить архив?
Всем привет, накопилась пачка вопросов.
Где вообще подробно можно почитать о концепции MPEG-DASH ?
Я понимаю как работает hls, есть куча .ts файлов, и m3u8 плейлист последний подаёшь к примеру video.js .
А как готовить видео для dash ? Зачем нужен mpd и что он содержит ?
Много где для приготовления dash используют MP4box, зачем он, FFmpeg не умеет того же самого ?
Если я хочу адаптивное видео(изменяемое качество в зависимости от канала), как я понимаю мне нужно его изначально для этого готовить. Или проще транскодить на лету. Умеет ли это nginx-vod-module ?
Как лучше хранить видео архив к примеру web камеры? Сразу чанками, или к примеру часовыми файлами и кормить через nginx-vod-module на просмотр ?
"Я понимаю как работает hls, есть куча .ts файлов, и m3u8 плейлист последний подаёшь к примеру video.js ."
Да, еще в плейлисте обычно ссылка(обычно относительная) на чанклист, а в ней уже на тски.
Можете сами открыть содержимое *m3u8(в консоли разработчика или curl например) и посмотреть что там содержится. Это просто набор ссылок и тегов.
Зачем нужен mpd и что он содержит ?
Концептуально тоже самое, только в hls свой апловский текстовый формат, а тут xml
Если я хочу адаптивное видео(изменяемое качество в зависимости от канала), как я понимаю мне нужно его изначально для этого готовить. Или проще транскодить на лету.
Если у вас НЕ live стриминг, то обычно лучше заранее приготовить. Нечего по сотню раз нагружать железо одной и той же работой. Один раз приготовил, положил в nginx и не паришься, отдаешь из кэша.
Можно запариться и при первом запросе приготавливать и отдавать сразу же и ложить в кэш. При втором запросе будет приготовленное из кэша отдаваться. Но скорее всего вам понадобится медиасервер и менее тривиальные настройки nginx.
Как лучше хранить видео архив к примеру web камеры? Сразу чанками, или к примеру часовыми файлами и кормить через nginx-vod-module на просмотр ?
Если НЕ лайв, то в зависимости от вариантов различных протоколов. Если только mpeg-dash и исходные файлы вам не нужны, то в чанках и храните. При этом nginx-vod-module вам не нужен, тк собираетесь нарезать ффмпегом. Если есть и другие протоколы вроде range-запросов к mp4, hls, то дешевле наверное хранить файлами.
Тут вопрос насколько критично что вы будете отдельно хранить и исходники и пакетизировать в другие форматы вод-модулем и даш.
Спасибо за развёрнутый ответ.
3. вот тут вроде как с помощью ffmpeg создают MPD ?
Не совсем понял для чего тогда нужен nginx-vod-module , если мне всё равно нужно самому сегментировать с помощью ffmpeg, и создавать манифест с помощью mp4box, или я путаю, и модуль умеет делать dash и hls сразу из больших цельных файлов ?