带有h264数据的gstreamer shmsrc和shmsink

带有h264数据的gstreamer shmsrc和shmsink,gstreamer,shared-memory,h.264,Gstreamer,Shared Memory,H.264,我正在尝试将一个h264编码的数据从gstreamer共享到另外两个进程(都基于gstreamer)。经过一些研究,我发现唯一的方法就是使用shm插件。 这就是我想做的 gstreamer--->h264 encoder--->shmsink shmrc--->process1 shmrc--->process2 我能够从videotestsrc和网络摄像头中获得原始数据。但对于h264编码的数据,它不是。 这是我的测试管道 gst-launch-1.0 videote

我正在尝试将一个h264编码的数据从gstreamer共享到另外两个进程(都基于gstreamer)。经过一些研究,我发现唯一的方法就是使用shm插件。 这就是我想做的

gstreamer--->h264 encoder--->shmsink
shmrc--->process1
shmrc--->process2
我能够从videotestsrc和网络摄像头中获得原始数据。但对于h264编码的数据,它不是。 这是我的测试管道

gst-launch-1.0 videotestsrc ! video/x-raw,width=640,height=480,format=YUY2 ! 
x264enc ! shmsink     socket-path=/tmp/foo     sync=true     wait-for-
connection=false     shm-size=10000000

gst-launch-1.0 shmsrc socket-path=/tmp/foo ! avdec_h264 ! video/x-
raw,width=640,height=480,framerate=25/1,format=YUY2 !   autovideosink

如果有人试用过h264编码数据的shm插件,请提供帮助

我不知道“autovideosink”中使用的接收器的功能,但据我所知,如果接收器支持的格式(如KMSink或ximagesink)与源提供的格式不同,则您需要使用videoconvert(如YUY2)或者,如果接收器支持摄像机格式,则使用videoparse。您可以使用gst-inspect-1.0检查支持的格式

无论如何,我可以在我的设置中使用videoconvert对您的管道进行一些修改:

/gst-launch-1.0 videotestsrc!x264enc!shmsink套接字路径=/tmp/foo sync=true等待连接=false shm size=10000000

/gst-launch-1.0 shmsrc套接字路径=/tmp/foo!h264parse!avdec_h264!视频转换!ximagesink

您可以根据需要的分辨率对其进行修改

请让我知道,如果你面临上述任何问题