Eu gostaria de usar um cubo Teradek conectado a uma câmera de transmissão para enviar para um servidor executando ffmpeg com uma porta RTMP aberta e faça com que o ffmpeg transmita novamente esse feed para um decodificador usando RTMP ou RTSP.
O Monaserver faz isso, mas preciso duplicar essa funcionalidade usando o ffmpeg. Eu usaria o cubo como um servidor, exceto que poderia estar transmitindo em qualquer lugar, portanto, abrir portas em todos os locais para os quais a câmera vai não é uma opção. Nosso decodificador é um Teradek Slice. Qualquer outra sugestão sobre como fazer isso seria muito apreciada.
Obrigado!
Resposta
Você pode usar FFmpeg como um servidor RTMP da seguinte forma ffmpeg -f flv -listen 1 -i rtmp://localhost:1935/live/app -c copy rtsp://YOUR_RTSP_HOST
Observações:
-
-listen 1
faz FFmpeg atuar como um servidor RTMP quando usado com protocolo RTMP - Use
rtmp://localhost:1935/live/app
como o URL do servidor RTMP na fonte - Você pode definir qualquer caminho de reprodução
rtmp://localhost:1935/any/thing
e qualquer porta - A principal vantagem desta forma é a simplicidade, a desvantagem é que o servidor pára se a fonte parou ou teve erros de codificação
- A outra opção é usar nginx com nginx-rtmp-module
Comentários
- Perfeito, muito obrigado. Se eu ' d quiser usar um aplicativo como o VLC para receber o fluxo do servidor, o ffmpeg pode escutar uma conexão e enviar para a porta local 1935 também?
- Sim,
ffmpeg -f flv -listen 1 -i rtmp://localhost:8889/live/app -c copy -f flv -listen 1 rtmp://localhost:1935/live/app
, basta definir portas diferentes para entrada e saída - Obrigado novamente, isso é exatamente o que eu preciso. Durante o teste, ' tentei quase todas as combinações de / live / app no Teradek Cube e vários aplicativos de streaming de vídeo RTMP do iOS para testar isso, e ffmpeg não responde enquanto o monaserver funciona. É o ' app ' a chave e deve ser incluído no cliente ' s url?
- Você elaboraria como definir os urls RTMP no Cube, aplicativos iOS e Monaserver? você abre as portas necessárias? Você pode definir qualquer playpath / qualquer / coisa
- Além disso, o servidor de entrada FFmpeg inicia quando recebe o fluxo e a saída começa quando recebe uma solicitação