Комментарии 34
Можно конечно! Просто собираете приложение у себя по инструкции и все
У него устаревший и патченый ffmpeg, что создаёт проблемы со сборкой на арче
(А зависимость от libfdk-aac создаёт юридические проблемы с распространением бинарных сборок, чёт мда)
Я зашёл к таймвебу, у них нет этого дистрибутива по умолчанию для клиентов. Все таки слишком экзотическая ос. А в чем устаревание библиотеки?
В том, что уже давно есть ffmpeg 4.3, в то время как OME завязан на ffmpeg 3.4 который имеет кучу мешающих мне багов
Впрочем, со старым ffmpeg всё-таки худо-бедно собирается и на арче тоже если пропатчить prerequisites.sh, так что ладно. Однако вынужденный отказ от использования системных библиотек мне всё равно не очень нравится
Потому что веб — это для браузеров. Приложения на Electron требуют слишком много ресурсов для выполнения простых задач ввиду низкого порога вхождения в разработку на JS. Как итог — утилита для записи флешек на 80 мегабайт. Программа, чтобы всего лишь записать флешку, запускает ещё один отдельный инстанс браузера. И текстовый редактор запускает инстанс браузера. И корпоративный мессенджер норовит. И мессенджер для геймеров. Мне, простите, суперкомпьютер купить, чтобы одновременно работать со всем этим? И это всё лишь потому что
airensoft.gitbook.io/ovenmediaengine/v/0.10.10/live-source/rtsp-pull-beta
airensoft.gitbook.io/ovenmediaengine/v/0.10.10/live-source/mpeg-2-ts-beta
А в каких случаях это требуется? Для серверов, которые сделаны, чтобы опускать битрейты?
Да, например это нужно для ABR Ladder'a, ну для всех других кейсов, где с медиа потоками нужно что-то сделать.
Насколько я помню, то Oven еще не умеет принимать рестрим от nginx-rtmp и всяких энтерпрайз штук как Wirecast (на нем он начинает дико кушать CPU, и не понятно почему, а тикет мой закрыли за давностью)
Они нацелены на OBS->WebRTC. И в основном только с ним и работают.
Я, конечно, до сих пор в него верю, но вот например github.com/ossrs/srs выглядит куда лучше сейчас
github.com/AirenSoft/OvenMediaEngine/issues/125#issuecomment-716319760
Ха, а вот srs не видел, он, смотрю, мощнее кишками, но с фронтом связка у него слабее. OvenPlayer тут смотрится интереснее. Хоть их и можно соединить наверняка, но в связке OME + OvenPlayer проект цельный, я бы все равно его выбрать сейчас. Для моей узкой задачи очень хорошо лег. Относительно просто все завелось, хоть и не без вопросов разрабам, которые я в статье раскрыл.
У OvenPlayer есть мелкие UX баги типа громкости сбрасывающейся при смене источников. Потеря автостарта при смене источников. Надо все это в тикеты завернуть. Мне очень понравилась ориентированность на аудиторию. Прямо законченный проект. И блог ведут и документашка вроде бы нормальная. На тикеты отвечают быстро. Мою статью даже попросили себе забрать переводом.
Когда Роман Арутюнян (rarutyunyan) выпустил модуль nginx-rtmp-module, это сильно перевернуло взгляд на доступность организации видеовещания.
Не хочется уменьшать заслуг Романа, но никакого переворота не было. Был ffmpeg который итак все это умел, все им пользовались (если не пользовались GStreamer или проприетарщиной), а модуль просто добавил ffmpeg в nginx. Удобно, приятно, но все то же самое можно было делать настраивая nginx и ffmpeg отдельно (или используя медиасерверы, которые либо ).
Форматы, работающие по http требуют хорошей буферизации. Задержка выливается в 15 секунд.
Справедливости ради задержка в hls зависит от настроек, при желании можно уменьшить количество чанков в чанклисте и уменьшить продолжительность чанков и добиться 5-6 секундных задержек (это также отражается на качестве стриминга при нестабильном канале и все равно не догоняет rtmp, у которого задержка может быть и секунда).
В issue к nginx-rtmp-module не я один [1] [2] оставлял вопросы о поддержке форматов передачи видео по http с низкой задержкой (2-3 секунды). Ведь если бы можно было вещать в формате dash и hls до 3 секунд на nginx-rtmp-module, меня бы это полностью устроило.
В ffmpeg поддержка lHLS и lDASH как будто бы есть ffmpeg.org/ffmpeg-formats.html
Можете попробовать, хотя до уровня rtmp вряд ли дотянет
Enable Low-latency HLS(LHLS). Adds #EXT-X-PREFETCH tag with current segment’s URI. Apple doesn’t have an official spec for LHLS. Meanwhile hls.js player folks are trying to standardize a open LHLS spec. The draft spec is available in github.com/video-dev/hlsjs-rfcs/blob/lhls-spec/proposals/0001-lhls.md This option will also try to comply with the above open spec, till Apple’s spec officially supports it. Applicable only when streaming and hls_playlist options are enabled. This is an experimental feature.
Enable Low-latency Dash by constraining the presence and values of some elements.
того все это было слишком сложно для вливающегося со стороны. Терпение лопалось раньше, чем появлялся какой-то результат. Самое у романа было было уметь собрать nginx, и то с появлением динамических модулей стало все еще проще.
Dash сейчас у меня в 2 cекунды задержки в 500kbps шикарно работает. Я вообще ждал, что rtmp добавят в браузеры нативно, если флеш задеприкейтят. Наивный я.
Де-факто nginx-rtmp до сих пор остается самым проверенным решением для приема RTMP трафика, но только как принимающий трафик (!). Т.к. без проблем с него можно забрать RTMP поток в FFmpeg, из FFmpeg'a забрать MPEGTS и лепить HLS как душе угодно :)
Самое смешное, что даже если и добавят LHLS, то и воспроизводить его нечем будет, hls.js уже как больше года добавляет к себе эту поддержку :))
На деле и с обычным HLS можно добиться задержки в секунды две (выставляем GOP в секунду, и играемся с буффером). Но такие реактивные методы опасны тем, что любой маленький пролаг влечет за собой буфферизацию и совсем не комфортный просмотр.
github.com/video-dev/hls.js/projects/7
К сожалению, проект c 2017 года не развивается
Ну это не так:
https://github.com/sergey-dryabzhinsky/nginx-rtmp-module/
https://github.com/chetandhembre/nginx-rtmp-module
https://github.com/winshining/nginx-http-flv-module
Ещё когда (где-то в 2016) я поднимал нужно уже было пользоваться форком ибо только он работал ожидаемым образом.
К сожалению сабж не тестировал еще, но пока топаю изучать доки, не могли бы вы подсказать, можно ли на его основе соорудить мини ютуб в LAN? Т.е. мне нужно из разных мест стримить на один ресурс, редиректить еще и на ютуб копию потока и отображать текущие трансляции как-то красиво.
Сейчас реализовано как раз на nginx-rtmp + ffmpeg + HLS. Не смотря на то что там latency и тп, важно то, что его крайне легко допилить. К примеру его обрабатываемые ивенты при подключении/отключении клиента и паблишера помогли наполнить БД, из которой потом гуй красиво тянет активные трансляции и считает клиентов.
1. может ли сабж такое?
2. Если да, то надо самому пилить или уже есть наброски?
Если есть какой нибудь всеядный движек для сбора статистики, может быть их совместное использование будет не сложным и удобным.
Видео вещание с OvenMediaEngine, до свидания nginx rtmp module