美文网首页HEXA机器人
HEXA娱乐开发日志技术点007——放弃标准姿势

HEXA娱乐开发日志技术点007——放弃标准姿势

作者: 阿棍儿_Leon | 来源:发表于2018-10-10 22:02 被阅读10次

    HEXA开发日志目录
    上一篇 HEXA娱乐开发日志技术点006——日拱一卒拱歪了


    成果

    c6a82368ade66bbec1399940dbd4a61e5634cba5成功实现从手机启动抓取摄像头图像推流。也就是说,加上之前的进展,我可以:

    • 用手机控制它连接到我的直播房间抓取弹幕
    • 用手机控制它把摄像头拍到的东西直播到手机上指定的地址

    更新一下下图,看起来所有东西已经完成了,不过准确地说,弹幕的转译和执行还没有完成,不过这一部分工作比较简单,就直接标绿了。

    技术需求与技术点

    标准姿势

    标准姿势——是指所有功能都要在一个skill内完成,即能够做一个发布的skill,大家从应用中心安装这个skill就可以玩起来。那么放弃标准姿势就是说,我不得不把一部分功能从skill里面拆出来,即安装这个skill之后,还必须再做点别的准备才能玩起来,这令我很不爽。
    放弃是个无奈之举,因为一个致命问题——运行skill的Linux用户没有访问摄像头(/dev/video0)和编码器(/dev/mxc_vpu)的权限,所以skill程序没法独立使用摄像头和编码器,必须要root用户帮忙提供系统服务来完成摄像头和编码器的使用。
    没有权限这个事费了我不少时间,因为总是C程序验得好好的,整合到skill里面就不工作了,反反复复的尝试后,才突然意识到这两种运行环境的用户不同。

    解决方案

    解决方案就以下两点

    • Gstreamer功能用系统服务的形式实现
    • skill通过命名管道(FIFO)的方式向系统服务发送命令,来控制Gstreamer服务

    以上两点一写出来,相对于上一篇就没多少新鲜的了。剩下那点新鲜的,一个是系统服务的实现方法,另一个是命名管道实现方法。这两个东西网上随便一搜就有,都是经典的linux知识,预计弄一两个番外篇专门说一下,在这里就不细讲了,都在commit里面了。
    这里只补充一些commit里面没体现的细节——系统服务的部署步骤:

    1. 把demo_not_skill/gstreamer复制到机器人里;
    2. 在这个目录中make,生成simple_server执行程序,如果要交叉编译,需要对Makefile里的CC进行配置;
    3. 将simple_serverd放到/etc/init.d,把simple_server放到/usr/local/sbin
    4. 为了能够开机自动启动服务,还需要建立一个这样的软链接(这涉及到系统服务中,运行等级的相关知识,网上也有很多资料)
    /etc/rc2.d/S99simple_serverd -> ../init.d/simple_serverd
    

    总结

    • 关键技术都完成了,但是放弃了封装成一个skill的标准姿势
    • 也许下次把弹幕命令设计一下
    • 也许下次把弹幕动作实现一下

    再说两句

    这个机器人摄像头的性能挺差的,原本的设计应该不是用来拍摄实时图像的,只是用来做一些简单的近距离识别,1280x720的分辨率下,帧数到不了5。要想接近实时帧率,分辨率必须是320x240。当然,默认配置会放大到640x480,这个由小放大是我一个玩过freescale的朋友说的。
    也就是说,由于硬件限制,最初玩直播的设想基本打水漂,等这个项目完成,后面还是多从它的运动机能上多动动脑筋吧。


    下一篇 未出炉

    相关文章

      网友评论

        本文标题:HEXA娱乐开发日志技术点007——放弃标准姿势

        本文链接:https://www.haomeiwen.com/subject/cgbmaftx.html