Streaming RTSP com ffmpeg?

Streaming RTSP com ffmpeg?

Portanto, consegui enviar com êxito um fluxo de vídeo RTP do meu servidor para o cliente em outro sistema na LAN e reproduzi-lo usando ffplay. Agora quero enviar o vídeo na mesma rede usando RTSP para que o cliente possa recebê-lo e ter opções adicionais, como pausar o vídeo, etc. Alguém pode me dar uma orientação geral ou indicar um recurso que possa me ajudar em cumprir minha tarefa?

ATUALIZAR:

Eu tentei estes comandos:

ffmpeg -re -i input -f rtsp -rtsp_transport tcp rtsp://localhost:8888/live.sdp

ffplay -rtsp_flags listen rtsp://localhost:8888/live.sdp

Ele inicia o streaming do vídeo em tempo real, mas na verdade não vejo nenhuma opção para controlar o fluxo de mídia, como reprodução, gravação, etc.!

NB: O arquivo .sdp que estou usando atualmente para RTSP é o mesmo que usei para streaming RTP.

Responder1

FWIW, consegui configurar um servidor RTSP local para fins de teste usandoservidor rtsp simplese ffmpeg seguindo estas etapas:

  1. Crie um arquivo de configuração para o servidor RTSP chamado rtsp-simple-server.ymlcom esta única linha:
    protocols: [tcp]
    
  2. Inicie o servidor RTSP como um contêiner Docker:
    $ docker run --rm -it -v $PWD/rtsp-simple-server.yml:/rtsp-simple-server.yml -p 8554:8554 aler9/rtsp-simple-server
    
  3. Use ffmpeg para transmitir um arquivo de vídeo (em loop eterno) para o servidor:
    $ ffmpeg -re -stream_loop -1 -i test.mp4 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/live.stream
    

Depois de executar isso, você pode usar ffplay para visualizar o stream:

$ ffplay -rtsp_transport tcp rtsp://localhost:8554/live.stream

Observe queservidor rtsp simplestambém pode lidar com fluxos UDP (iso TCP), mas é complicado executar o servidor como um contêiner Docker.

informação relacionada