Linux我用 LinuxHEXA机器人

HEXA娱乐开发日志技术点005——死而复生之Gstreamer

2018-05-19  本文已影响16人  阿棍儿_Leon

HEXA开发日志目录
上一篇 HEXA娱乐开发日志技术点004——一步到位的推流


前言

距离上一次发文快4周了,不过我没有偷懒,技术上确实遇到了点困难,反正情况变成了下面这样,讲完干货再说。

这些折腾充分体现了技术视野对开发的重要性。

技术需求与技术点

干货

很遗憾,上次的工作成果又被暂时抛弃了,这次我用Gstreamer
一切原因后面再解释,先说说搞出了啥咋搞的为啥这么搞

搞出了啥

成功使用Gstreamer实现了推流,从网页上看的性能,fps16左右,分辨率320x200,h264编码,虽然参数惨不忍赌,但也比之前的fps不到4强了。目前还没有整合到skill里面,只是用binary执行文件测试,源码在github上。

咋搞的

  1. 登陆机器人
  2. 挂载优盘(优盘里有gst-plugins-good的git库)
  3. 编译+安装gst-plugins-good
  4. 替换机器人身上的v4l2 gstreamer插件
  5. 编译我写的测试程序,生成binary执行文件simple
  6. 执行./simple <你的rtmp url>

为啥这么搞

下面逐条解释一下上面步骤

ssh root@<机器人IP地址>
mkdir /mnt/sda1
mount -t vfat dev/sda1 /mnt/sda1
cd /mnt/sda1/gst-plugins-good
git checkout tags/1.2.0
git submodule init
git submodule update
./autogen.sh
报错,形如fail...need ...xxx
apt search xxx
找到形如xxx-yyy
apt install xxx-yyy
./autogen.sh
再次执行,没有报错
make
make install
mv /usr/local/lib/gstreamer-1.0/libgstvideo4linux2.so /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/libgstvideo4linux2.so

这之后可以考虑make uninstall卸掉它,因为需要的库已经换完了,也没必要占用空间。

疑似kernel的问题

有兴趣的小伙伴可以去了解一下这个版本官方的的v4l2的VIDIOC_ENUMSTD ioctl返回值是不是有问题。机器人的kernel版本是下面这样的

uname -a
Linux hexa 3.10.17_1.0.0_mb9000+ #35 SMP PREEMPT Thu Jan 18 07:08:48 UTC 2018 armv7l armv7l armv7l GNU/Linux

解惑

为什么改用Gstreamer

因为官方推荐
故事是这样的,在上次的总结中有这样一个问题:

下位机推流还有点问题,可以在播放端看到,似乎是推流的速度不够,出现了视频网站那种放一会儿就要缓冲一下的现象,具体原因有待分析

我针对这个问题研究了一番,发现官方的GO语言接口获取一张图像的时间是200多毫秒,大概是每秒4帧不到的样子,后来我看到官方论坛上有提到用v4l2驱动直接访问/dev/video0设备文件的方式,我试了发现,1280x720的帧率就是200多毫秒,然后我向官方资讯,就被安利了Gstreamer和他们集成到机器人身上的一个VPU硬件编码模块和基于它的Gstreamer插件。

这之后我就开始在Gstreamer和ffmpeg之间徘徊不前。

有趣的事

如果你不搞嵌入式,也许不会发现这件事很特别,那就是我的编译是在机器人上完成的。经典的嵌入式开发套路是这样的

上位机编译,下位机运行

这个机器人违反了这个套路,它身上的开发环境一应俱全,只要不嫌编译慢,它就既是上位机,又是下位机。


另一件有趣的事情是,机器人被我搞死一次。
那天我是把gstreamer工程(为啥编译它?在这文章背后,我走的弯路多了。有人能岁月静好,是因为有人在背后负重前行)放到机器人身上(不在优盘里)编译,结果空间不够了,我就删了点东西,因为它总是报告/tmp目录下创建东西不成功,我就把下面东西删了,然后把优盘挂载到了/tmp,结果第二天我再开机就起不来了。后来我找到了说明书上重置的方法,要用6根线,把机器人背上的管脚按照说明书接一下,最后我到公司找了6根线把它救活了。
在清空/tmp时,下面有一个套接字文件,我比较怀疑是删了它导致了机器人的死亡,但是我暂时不想验证这个结论。

srwxr-xr-x  1 root root      0 May  8  2017 wpa_ctrl_698=

总结


下一篇 未出炉

上一篇 下一篇

猜你喜欢

热点阅读