使用GStreamer

时间:2016-06-09 11:57:34

标签: android udp gstreamer h.264 mpeg

我对gstreamer没有太多经验,我在网上找不到任何东西来解决这个问题。

我正在使用this open-source开发一款Android应用来将相机作为H264 mpegts通过UDP传输。

我遇到了管道,我有两条工作流水线,我无法合并在一起工作。 最初的开源管道:

"ahcsrc ! queue ! glimagesink name=vsink sync=false"

(当ahcsrc代表android-hardware-camera-src时)

我的测试管道:

"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"

不幸的是那里没有运气。非常感谢任何帮助!

编辑: 我试图在任何地方添加日志,然后看到没有错误,除了每个模块将其状态从PAUSED更改为PLAYING,除了udpsink。

我添加了“udpsink async = false”,这使得它变为播放,但没有发送数据包,也没有明显的错误。 也许水槽没有得到任何数据?

Edit2:尝试了一切之后我发现它认为这可能是ahcsrc的一个问题,因为这个管道:

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

结果

  

无法将ahcsrc0链接到videoconvert0

毕竟,它是gst-plugins-bad的一部分。任何困惑都会很棒。

1 个答案:

答案 0 :(得分:0)

你的意思是没有运气?有什么错误吗

ahcsrc的输出似乎是raw yuv - 也许没有必要使用decodebin,只是videoconvert。

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

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

请使用env变量GST_LAUNCH=4 ./your-app添加一些运行应用的日志并将其粘贴到某处..