使用GStreamer通过UDP将Android摄像头流式传输为H264 mpeg ts

使用GStreamer通过UDP将Android摄像头流式传输为H264 mpeg ts,android,udp,gstreamer,h.264,mpeg,Android,Udp,Gstreamer,H.264,Mpeg,我对gstreamer没有太多的经验,而且我也无法在网上找到解决办法 我正在开发一个Android应用程序,通过UDP以H264 mpegts的速度传输摄像头 我被管道卡住了,因为我有两条工作管道,无法合并在一起工作。 原始开源的管道: "ahcsrc ! queue ! glimagesink name=vsink sync=false" "videotestsrc ! decodebin ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.

我对gstreamer没有太多的经验,而且我也无法在网上找到解决办法

我正在开发一个Android应用程序,通过UDP以H264 mpegts的速度传输摄像头

我被管道卡住了,因为我有两条工作管道,无法合并在一起工作。 原始开源的管道:

"ahcsrc ! queue ! glimagesink name=vsink sync=false"
"videotestsrc ! decodebin ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234"
当ahcsrc代表android硬件摄像头src时

我的测试管道:

"ahcsrc ! queue ! glimagesink name=vsink sync=false"
"videotestsrc ! decodebin ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234"
两者都很好用

我的目标是采用我的测试管道,并将videotestsrc切换到ahcsrc,如下所示:

"ahcsrc ! decodebin ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234"
不幸的是,那里没有运气。我真的很感激任何帮助

编辑: 我尝试在所有地方添加日志,然后发现没有错误,除了每个模块都将其状态从暂停更改为播放(udpsink除外)

我在其中添加了udpsink async=false,这使得它开始播放,但没有发送数据包,也没有明显的错误。 也许水槽没有任何数据

Edit2:在尝试了所有可能发现的东西之后,我认为这可能是ahcsrc的问题,因为这条管道:

ahcsrc ! video/x-raw-yuv, framerate=25/1, width=640, height=360 ! videoconvert.....
结果

无法将ahcsrc0链接到videoconvert0


毕竟,这是gst插件的一部分。任何确认都很好。

什么是不走运?有错误吗

ahcsrc的输出似乎是-也许不需要使用decodebin,只需要使用videoconvert

您可以在src之后添加队列以获得更好的性能,但不确定它是否可以工作,但就是这样:

ahcsrc ! queue ! videoconvert ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234

请添加一些日志,使用env变量GST_LAUNCH=4运行应用程序。/将应用程序粘贴到某处。

什么是不走运?有错误吗

ahcsrc的输出似乎是-也许不需要使用decodebin,只需要使用videoconvert

您可以在src之后添加队列以获得更好的性能,但不确定它是否可以工作,但就是这样:

ahcsrc ! queue ! videoconvert ! x264enc bframes=2 ! mpegtsmux ! udpsink host=192.168.102.74 port=1234

请使用环境变量GST_LAUNCH=4添加一些运行应用程序的日志。/您的应用程序并将其粘贴到某处。

尝试运行您的管道。我收到此错误:gst\u视频\u覆盖\u设置\u窗口\u句柄:断言“gst\u是\u视频\u覆盖”失败我的管道未测试。。所以也许有什么不对劲。。但是为什么我的管道中的任何一个元素都会产生这个错误呢?看起来你在使用一些视频接收器,是吗?请使用此管道添加更多日志-理想情况下,在您的问题中,当您更新您的问题时,其他人会注意到。。您可以使用pastebin和复制paste重要零件来运行管道。我收到此错误:gst\u视频\u覆盖\u设置\u窗口\u句柄:断言“gst\u是\u视频\u覆盖”失败我的管道未测试。。所以也许有什么不对劲。。但是为什么我的管道中的任何一个元素都会产生这个错误呢?看起来你在使用一些视频接收器,是吗?请使用此管道添加更多日志-理想情况下,在您的问题中,当您更新您的问题时,其他人会注意到。。您可以使用pastebin并复制粘贴重要零件