Während ich einen DVR für einen bestimmten Zweck entwickelte, führte ich viele h264-Streaming-Tests durch, hauptsächlich mit ffmpeg als Server und VLC als Player. Das Ziel war etwas anders, da ich nur eine Möglichkeit brauchte, vier Kameras ( v4l2- Geräte) in Echtzeit in der Vorschau anzuzeigen, sodass ich h264-Video direkt über UDP streamen konnte. Im Forschungsprozess verwendete ich jedoch auch VLC als Server Es kann als Ausgangspunkt für Ihre Testbench dienen.
Angenommen, Sie verwenden Linux als Serverplattform. Die folgende Befehlszeile verwendet den VLC-Befehlszeilenclient ( cvlc ), um Rohvideo von einem v4l2-Gerät (einer Webcam oder einer Videokarteneingabe) abzurufen, es in h264 zu codieren und dann den Stream anzukündigen einen RTSP-Client, um Folgendes zu erhalten:
cvlc v4l2:///dev/video0 --sout '#transcode:rtp'
Wenn Sie auch VLC als Client verwenden, können Sie den Stream hiermit anzeigen ( Server wäre der Servername oder die IP-Adresse):
vlc rtsp://server:8554/video.sdp
Da Sie das Video zu vielen Clients streamen müssen, ist es besser, Multicast zu verwenden, damit Ihr Server nicht für jeden verbundenen Client einen neuen Stream senden muss. Angenommen, Ihre Multicast-Adresse lautet 239.255.1.1. Sie müssen sie nur im RTP-Abschnitt angeben:
cvlc v4l2:///dev/video0 --sout '#transcode:rtp'
Da die video.sdp- Datei von VLC selbst generiert wird, stellen Sie einfach die gleiche Verbindung wie zuvor her, aber Ihr Client erhält stattdessen den Stream von der Multicast-Adresse:
vlc rtsp://server:8554/video.sdp