0

I'm looking for simple free/open source server software that would allow me to do this: Publish video stream over RTMP from local computer behind NAT, to server (Linux). Server should serve that stream over http and/or rtmp. There is no need to server to more than one client for now.

I have tried crtmpserver or rtmpd, but there is no documentation for it, and I don't know how to setup this specific configuration. I did try however, but no success. I have managed to publish stream with OBS (or at least it seemed so), but could not find way to play it. If you can help me configure it that would be OK solution.

I have tried rtmplite but it does not work. I failed to publish stream.

I have tried ant media server (based on red5) and succeeded, but it seems pretty slow, glitches all the time with 50mbps upload and download and low quality video. And I don't like that http stream version first serves m3u8 list. If you have advice on how to solve these problems that would be OK solution.

I have looked at nginx with rtmp module, but could not find the way to configure HTTP download of stream published over RTMP. If you can direct me how to do it, that would be OK solution.

Any other server maybe?

Thanks!

EDIT:

I've managed to accomplish this using nginx and BLSS (rtmp) module to accept published stream and stream it further to VLC. VLC accept RTMP stream and serves it further to clients using HTTP. This is what I wanted however, VLC introduces here 6 seconds delay, and it is more complex than having single piece of software doing it. nginx does not introduce delay at all, and I would be happy if I could reduce delay of VLC at least to 3 seconds. VLC command I use:

cvlc "rtmp://address:port/stream" --sout "#standard{access=http,mux=ts,dst=address:port}"

Delay is bigger problem than complexity. I've tried nginx with HLS but it introduced over 15 seconds delay, and served .m3u8 which I try to avoid for certain reasons.

Thanks.

1 Answer 1

0

Why do you want to play in http? VLC can read RTMP native stream.

I use nginx to stream from OBS to my linux server and share my live desktop screen in full HD to other users running 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.

Source

6
  • Because it should be consumed by applications that only handle http, and are behind firewalls. I appreciate your help, and I also think that your answer should be a comment.
    – Marko
    Oct 5, 2018 at 22:00
  • I understand your requirements and updated my answer.
    – Texxi
    Oct 6, 2018 at 21:38
  • One client publishes stream as RTMP, another one consumes it as HTTP.
    – Marko
    Oct 6, 2018 at 22:46
  • That is not possible Sir. You need to convert it.
    – Texxi
    Oct 19, 2018 at 1:02
  • Would you kindly confirm my answer above if I solved your question? merci.
    – Texxi
    Oct 22, 2018 at 11:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .