HEXA娱乐开发日志调研000——机器人直接推流可行
上一篇 HEXA机器人练手项目
今天身体抱恙,趁着输液无聊做了些调研
HEXA知多少
我能够对它做这些事:
1.用交叉编译器制作C/C++库,供go语言调用
2.读官方例子代码(官方sdk)知道它使用摄像头的基本套路,它一句代码就能把摄像头数据取出来,字面看上去是YCbCr格式的raw data,能拿到raw data就好办了,这奠定了对视频内容为所欲为的基础。它后面如何三句代码就完成了jpeg编码、编码内容向字符串的转换,字符串的发送我就不是很关心了。而client这端(即电脑或手机)运行的就是一个网页,可以用javascript写与机器人的交互逻辑。
关于推流的可行性
我已经找到了开源的rtmp推流库叫RTMPDUMP(官网),网上的例子代码也不少,也有一些在嵌入式平台上使用的,所以可行性基本是确定的。
然而,有件小事花了我一些时间。我们可以想象,推流应该有个地址,我们向那个地址推视频流,但是用过OBS或其他RTMP推流或直播工具的人应该知道,直播平台还会提供一个串流码(有的平台叫直播码,OSB界面上英文叫Stream Key),不把这个码填到直播软件里,就不能把视频推送到直播平台。我一开始不知道这个东西叫啥,去搜索了OBS相关图片,看到叫Stream Key,再看到有的平台叫直播码,然而再用这两个关键字仍然没找到有用信息,网上例子也都没提这个事情。后来实在没办法,就去OBS源码(github源码)里搜“stream key”,这样才顺藤摸瓜找到了这东西是啥,最后可以看到它在RTMPDUMP里面的样子。
插一段题外话,解释一下为什么在OBS里搜,而且还找到了RTMPDUMP里面去了。因为这里面有这么个关系,OBS主要使用的是ffmpeg,ffmpeg关于rtmp部分使用的就是RTMPDUMP,我是知道它们是这种调用关系,所以就去OBS代码里直接搜了。
有2个发现:
1.这个东西在代码里叫playpath,再一搜,也叫串流码
2.OBS内使用的RTMPDUMP有自己的客制化,当然这不重要。。。
至此,推流部分的可行性和技术细节的基本实现方向确定了。只要我能把RTMPDUMP做成库,能在机器人身上顺利使用的话,就可以推送到任意直播平台了。