2016-06-09 219 views
2

我对gstreamer没有多少经验,也找不到线上的东西来搞清楚。使用GStreamer通过UDP流式传输Android摄像头H264 mpeg-ts

我使用this open-source来开发一个Android应用程序,通过UDP流式传输相机作为H264 mpegts。

我被卡住了管道,我有两个工作管道,我不能合并在一起工作。 原来开源的管道:

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

(当ahcsrc代表Android的硬件相机-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..... 

结果与

Could not link ahcsrc0 to videoconvert0

毕竟,这是部分的gst-plugins-bad。任何配置都会很棒。

回答

0

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

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

您可以SRC后加入队列中有更好的表现,不知道这是否会成功,但是这是它:

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

请与环境变量GST_LAUNCH=4 ./your-app运行你的应用程序添加一些日志,并将这些地方粘贴。

+0

试图运行你的管道。我收到此错误: gst_video_overlay_set_window_handle:断言'GST_IS_VIDEO_OVERLAY(覆盖)'失败 – Weknin

+0

我的管道没有经过测试..所以也许有什么问题..但为什么我的管道的任何元素产生这个错误 - 这看起来像你正在使用一些视频汇 - 你呢?请使用此管道添加更多日志 - 理想情况下在您的问题中(其他人会在您更新问题时注意到)..您可以使用pastebin并复制粘贴重要部分 – nayana

相关问题