Publicar sobre fluxo RTMP sobre HTTP da forma mais simples possível

0

Estou à procura de um simples software de servidor gratuito / de código aberto que me permita fazer isso: Publique o fluxo de vídeo por RTMP do computador local, por trás do NAT, para o servidor (Linux). O servidor deve servir esse fluxo sobre http e / ou rtmp. Não há necessidade de servidor para mais de um cliente por enquanto.

Eu tentei crtmpserver ou rtmpd , mas não há documentação para isso e não sei como configurar essa configuração específica. Eu tentei no entanto, mas sem sucesso. Eu consegui publicar fluxo com OBS (ou pelo menos parecia que sim), mas não consegui encontrar maneira de jogar. Se você puder me ajudar a configurar, seria uma solução OK.

Eu tentei rtmplite , mas não funciona. Não consegui publicar stream.

Eu tentei ant media server (baseado em red5) e consegui, mas parece bem lento, falhas o tempo todo com upload e download de 50mbps e vídeo de baixa qualidade. E eu não gosto que a versão do stream http atenda a lista m3u8. Se você tiver conselhos sobre como resolver esses problemas, seria uma solução OK.

Eu olhei para nginx with rtmp module , mas não consegui encontrar o caminho para configurar o download HTTP do fluxo publicado sobre RTMP. Se você puder me indicar como fazer isso, seria uma solução OK.

Qualquer outro servidor talvez?

Obrigado!

EDITAR:

Consegui fazer isso usando o módulo nginx e BLSS (rtmp) para aceitar o fluxo publicado e transmiti-lo ainda mais para o VLC. O VLC aceita o fluxo RTMP e o serve mais aos clientes que usam HTTP. Isto é o que eu queria, no entanto, o VLC apresenta aqui 6 segundos de atraso, e é mais complexo do que ter uma única parte de software fazendo isso. O nginx não apresenta atraso algum, e eu ficaria feliz se eu pudesse reduzir o atraso do VLC pelo menos para 3 segundos. Comando VLC eu uso:

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

O atraso é um problema maior que a complexidade. Eu tentei o nginx com o HLS mas ele introduziu mais de 15 segundos de atraso e serviu o .m3u8 que eu tento evitar por certas razões.

Obrigado.

    
por Marko 05.10.2018 / 19:33

1 resposta

0

Por que você quer jogar em http? O VLC pode ler o fluxo nativo do RTMP.

Eu uso nginx para transmitir do OBS para o meu servidor linux e compartilhar minha tela de desktop ao vivo em full HD para outros usuários executando o 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.

Fonte

    
por 05.10.2018 / 23:43