我有一台服务器使用GStream使用以下gst-launch命令广播USB网络摄像头生成的视频:
gst-launch-1.0 v4l2src ! video/x-raw,width=352,height=288 ! jpegenc! rtpjpegpay ! udpsink host=239.255.12.52 port=5004
现在我需要一个客户端用VLC播放该广播。我尝试播放以下内容:
rtsp://239.255.12.52:5004
但我只收到以下错误:
SDP required:
A description in SDP format is required to receive the RTP stream. Note that rtp:// URIs cannot work with dynamic RTP payload format (96).
然后我搜索试图找到一个可以帮助我播放流的sdp文件。我试过这个:
v=0
c=IN IP4 239.255.12.52
t=0
m=video 5004 RTP/AVP 96
a=rtpmap:96 JPEG/90000
但它确实有效。 vlc日志只是说:
es error: cannot peek
es error: cannot peek
...
我知道流正在运行,因为我可以使用gstreamer使用以下命令播放它:
gst-launch-1.0 udpsrc uri="udp://239.255.12.52:5004" ! application/x-rtp,encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink
但我需要它与vlc而不是gstreamer。有任何想法吗? 谢谢!
答案 0 :(得分:0)
这种方法怎么样:
server(gstreamer):
gst-launch-1.0 v4l2src ! image/jpeg,width=1280,height=720 ! tcpserversink host=###.###.###.###
client(vlc):
tcp://###.###.###.###:4953
此外,在vlc gui中,将缓存设置为0 ms。 (:网络缓存= 0)
在这种方法中,服务器端没有额外的编码(不需要jpegenc),因为摄像机本身可以生成.jpg图像(这在网络摄像机中很常见)。也不需要多路复用。
在客户端,延迟很小。
它不是多播,但也许对你没问题?