答案1
当我为特定目的开发 DVR 时,我做了很多h264 流媒体测试主要利用ffmpeg作为服务器,VLC 作为播放器。目标有点不同,因为我只需要一种方法来预览四个摄像头(v4l2设备)实时传输 h264 视频,所以我最终直接通过 UDP 传输 h264 视频,但在研究过程中,我还使用 VLC 作为服务器,所以也许它可以作为你的测试台的起点。
假设您使用 Linux 作为服务器平台,下面的命令行使用 VLC 命令行客户端(循环流化床)从 v4l2 设备(网络摄像头或视频卡输入)获取原始视频,将其编码为 h264,然后为 RTSP 客户端播报该流以获取:
cvlc v4l2:///dev/video0 --sout '#transcode{vcodec=mp4v,vb=2048}:rtp{sdp=rtsp://@:8554/video.sdp}'
如果您还使用 VLC 作为客户端,则可以使用此客户端查看流 (服务器是服务器名称或 IP 地址):
vlc rtsp://server:8554/video.sdp
由于你需要将视频流式传输到许多客户端,因此最好使用多播,这样您的服务器就不必为每个连接的客户端发送新的流。假设您的多播地址是 239.255.1.1,您只需要在 RTP 部分指定它:
cvlc v4l2:///dev/video0 --sout '#transcode{vcodec=mp4v,vb=2048}:rtp{sdp=rtsp://@:8554/video.sdp, dst=239.255.1.1}'
自视频.sdp文件由 VLC 本身生成,您只需以与之前相同的方式连接,但您的客户端将从多播地址获取流:
vlc rtsp://server:8554/video.sdp