Streaming VLC-如何播放MJPEG流

Streaming VLC-如何播放MJPEG流,streaming,gstreamer,vlc,rtp,mjpeg,Streaming,Gstreamer,Vlc,Rtp,Mjpeg,我有一台服务器,使用GStream和以下gst启动命令播放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 d

我有一台服务器,使用GStream和以下gst启动命令播放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。有什么想法吗?
谢谢

这种方法怎么样:

服务器(gstreamer):

客户(vlc):

此外,在vlc gui中,将缓存设置为0 ms.(:network caching=0)

在这种方法中,服务器端没有额外的编码(不需要jpegenc),因为相机本身可以生成.jpg图像(这在网络相机中很常见)。也不需要muxing

在客户端,延迟是最小的


这不是多播,但可能对您来说没问题?

这种方法怎么样:

服务器(gstreamer):

客户(vlc):

此外,在vlc gui中,将缓存设置为0 ms.(:network caching=0)

在这种方法中,服务器端没有额外的编码(不需要jpegenc),因为相机本身可以生成.jpg图像(这在网络相机中很常见)。也不需要muxing

在客户端,延迟是最小的


这不是多播,但可能对您来说没问题?

这不是rtsp而是rtp流。。但是您可以将元数据存储在mpeg ts中,因此不需要sdp-check应答。。但是你需要使用h264。。然后您将在vlc
udp://@239.255.12.52:5004
Hi@otopolsky中打开!我也尝试过使用rtp://239.255.12.52:5004. 它也不起作用。问题是,正如我们在您提到的答案中所讨论的,使用h264确实会在流中产生2-3秒的延迟,这是不可接受的。我发现使用gstreamer和mjpeg流时,相机的延迟不到一秒。但如果我使用gst启动命令在客户端播放该流,则会出现这种情况。我不能用。如果我使用mjpeg,是否无法使用vlc播放流?谢谢您需要正确的sdp文件,它应该可以工作-如果您有doubpts,请将gstreamer管道保存到文件中(在mp4中对其进行mux,并将其保存到filesrc),并检查其是否可以在vlc中播放。。和它的rtp。。rtsp非常复杂,您需要有rtsp服务器(有gstreamer变体)…看起来您缺少sdp文件上的原始字段“o=…”字段这不是rtsp,而是rtp流。。但是您可以将元数据存储在mpeg ts中,因此不需要sdp-check应答。。但是你需要使用h264。。然后您将在vlc
udp://@239.255.12.52:5004
Hi@otopolsky中打开!我也尝试过使用rtp://239.255.12.52:5004. 它也不起作用。问题是,正如我们在您提到的答案中所讨论的,使用h264确实会在流中产生2-3秒的延迟,这是不可接受的。我发现使用gstreamer和mjpeg流时,相机的延迟不到一秒。但如果我使用gst启动命令在客户端播放该流,则会出现这种情况。我不能用。如果我使用mjpeg,是否无法使用vlc播放流?谢谢您需要正确的sdp文件,它应该可以工作-如果您有doubpts,请将gstreamer管道保存到文件中(在mp4中对其进行mux,并将其保存到filesrc),并检查其是否可以在vlc中播放。。和它的rtp。。rtsp非常复杂,您需要有rtsp服务器(有gstreamer变体)…看起来您缺少sdp文件上的原始字段“o=…”字段
gst-launch-1.0 v4l2src ! image/jpeg,width=1280,height=720 ! tcpserversink host=###.###.###.###
tcp://###.###.###.###:4953