Публикация через RTMP поток через HTTP как можно проще

678
Marko

Я ищу простое бесплатное серверное программное обеспечение с открытым исходным кодом, которое позволило бы мне сделать это: Публиковать видеопоток по RTMP с локального компьютера за NAT на сервер (Linux). Сервер должен обслуживать этот поток через http и / или rtmp. На данный момент нет необходимости использовать более одного клиента.

Я пробовал crtmpserverили rtmpd, но нет документации для этого, и я не знаю, как настроить эту конкретную конфигурацию. Однако я попытался, но безуспешно. Мне удалось опубликовать поток с OBS (или, по крайней мере, так казалось), но я не смог найти способ воспроизвести его. Если вы можете помочь мне настроить его, это будет в порядке решения.

Я пытался, rtmpliteно это не работает. Мне не удалось опубликовать стрим.

Я попытался ant media server(на основе Red5) и преуспел, но, кажется, довольно медленно, глюки все время с загрузкой и загрузкой 50 Мбит / с и видео низкого качества. И мне не нравится, что версия http stream в первую очередь обслуживает список m3u8. Если у вас есть совет о том, как решить эти проблемы, это будет правильным решением.

Я посмотрел nginx with rtmp module, но не смог найти способ настроить загрузку HTTP потока, опубликованного через RTMP. Если вы можете указать мне, как это сделать, это будет хорошим решением.

Может быть, любой другой сервер?

Спасибо!

РЕДАКТИРОВАТЬ:

Мне удалось сделать это с помощью модулей nginx и BLSS (rtmp), чтобы принять опубликованный поток и направить его дальше в VLC. VLC принимает поток RTMP и передает его клиентам, использующим HTTP. Это то, что я хотел, однако, VLC вводит здесь 6-секундную задержку, и это более сложно, чем выполнение одного программного обеспечения. nginx вообще не вводит задержку, и я был бы рад, если бы смог уменьшить задержку VLC как минимум до 3 секунд. Я использую команду VLC:

cvlc "rtmp://address:port/stream" --sout "#standard"

Задержка - большая проблема, чем сложность. Я пробовал nginx с HLS, но с задержкой более 15 секунд он подал .m3u8, чего я стараюсь избегать по определенным причинам.

Благодарю.

0

1 ответ на вопрос

0
Texxi

Почему вы хотите играть в http? VLC может читать RTMP собственный поток.

Я использую nginx для потоковой передачи с OBS на мой сервер linux и делюсь экраном рабочего стола в режиме Full HD с другими пользователями, использующими VLC ...

HTTP and RTMP are two different things. There is no way to transfer RTMP package through HTTP, because if a client sends an HTTP request, the server will return an HTTP response and then the client would consume HTTP package. In theory, the client can then unpack the HTTP package, but there would require extra work.  A much better solution is using HTTP Live Streaming (HLS). nginx-vod-module supports HLS. It can be easily configured in the config file. When a video is put in the server, the client can use a URL like http://127.0.0.1/vod/sample.mp4/index.m3u8. The Nginx server automatically partitions the video to HTTP package and provide a playlist. So the client can play it. HLS is widely supported by many open source players (for browsers) and mobile devices (both ios and android). And it can be easily configured with HTTPS for secure transformation. 

Источник

Потому что он должен использоваться приложениями, которые обрабатывают только http и находятся за брандмауэрами. Я ценю вашу помощь, и я также думаю, что ваш ответ должен быть комментарием. Marko 6 лет назад 0
Я понял ваши требования и обновил свой ответ. Texxi 6 лет назад 0
Один клиент публикует поток как RTMP, другой использует его как HTTP. Marko 6 лет назад 0
Это невозможно, сэр. Вы должны преобразовать это. Texxi 6 лет назад 0
Не могли бы вы подтвердить мой ответ выше, если бы я решил ваш вопрос? мерси. Texxi 6 лет назад 0
:) Я обновлю свой вопрос, так как вы, очевидно, меня не понимаете. Marko 6 лет назад 0