我对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的一部分。任何困惑都会很棒。
答案 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
添加一些运行应用的日志并将其粘贴到某处..