Enquanto desenvolvia um DVR para uma finalidade específica, fiz muitos testes de streaming h264 usando principalmente ffmpeg como servidor e VLC como jogador. O objetivo era um pouco diferente, pois eu só precisava de uma maneira de visualizar quatro câmeras ( v4l2 dispositivos) em tempo real, então eu Acabei transmitindo vídeo h264 diretamente sobre o UDP, mas no processo de pesquisa eu também usei o VLC como servidor, então talvez ele possa servir como ponto de partida para o seu testbench.
Supondo que você esteja usando o Linux como sua plataforma de servidor, a linha de comando abaixo usa o cliente de linha de comando VLC ( cvlc ) para obter vídeo bruto de um dispositivo v4l2 (uma webcam ou uma entrada de placa de vídeo) codificá-lo em h264 e, em seguida, anunciar o fluxo de um cliente RTSP para obter:
cvlc v4l2:///dev/video0 --sout '#transcode{vcodec=mp4v,vb=2048}:rtp{sdp=rtsp://@:8554/video.sdp}'
Se você também usa o VLC como cliente, você pode visualizar o fluxo com isso ( servidor seria o nome do servidor ou o endereço IP):
vlc rtsp://server:8554/video.sdp
Como você precisa transmitir o vídeo para muitos clientes, seria melhor usar o multicast , para que seu servidor não Não é necessário enviar um novo fluxo para cada cliente conectado. Supondo que seu endereço multicast seja 239.255.1.1, você só precisa especificá-lo na seção RTP:
cvlc v4l2:///dev/video0 --sout '#transcode{vcodec=mp4v,vb=2048}:rtp{sdp=rtsp://@:8554/video.sdp, dst=239.255.1.1}'
Como o arquivo video.sdp é gerado pelo próprio VLC, você apenas se conecta da mesma forma que antes, mas o seu cliente obterá o fluxo do endereço multicast:
vlc rtsp://server:8554/video.sdp