一、简介


本开发教程主要用于指导手机APP端如何通过WIFI获取Drift运动相机的实时视频流来实现远程(云)会议系统。相机支持如下技术特点:

  1. Drift运动相机目前支持会议系统的有Drift X1+, GHOST 4K以及GHOST X四个型号。
  2. 第一次使用或更换外接路由器时, 采用扫描二维码方式设置相机外接Wi-Fi路由器或4G路由器或个人热点的SSID信息,以及视频流的格式等信息。
  3. 采用UDP广播包协议来实现发现设备,占用及释放设备
  4. 视频流支持TCP,RTSP以及RTMP通讯协议


注: 该功能Drift产品通用版本固件不支持,需要下载专用会议系统固件,具体可发邮件info@foream.com获取


二、Drift X1+ 如何设置Wi-Fi路由器信息


手机APP按一定的字符串格式,产生二维码,如图:

以上二维码字符串:“4|foream_dev|foreamqwe123|192.168.1.14|h264”,

相机开机后,长按相应键可进入扫码模式,如X1是长按REC键,有语音提示“开始扫描”,松开按键后,相机镜头距离手机15cm左右对准手机屏幕显示的二维码,直到听到“扫描成功”,则会把二维码的数据信息写入相机并保存,然后自动连接路由器进入云视频模式,这样就可以获取相机的实时视频流了。

GHOST 4K和GHOST X 是开机后长按中间按键进入扫描模式。

第一次使用相机需要设置路由器信息,或需要修改路由器信息时,可通过扫描二维码设置。

Drift相机远程视频会议系统有两种方式提供视频流, 一种是拉流方式,相机作为视频流服务端提供rtsp或tcp协议的视频流, 另一种是推流方式, 相机采用rtmp方式把音视频流直接推流到云服务器端。

  • 采用拉流方式的二维码数据格式如下:“4|router_ssid|router_password|phone_ip|stream_type”

4: 表示支持相机rtsp或tcp拉流方式登录远程会议系统

router_ssid:  表示外接Wi-Fi路由器或个人热点的SSID

router_password:  表示外接Wi-Fi路由或个人热点的Password, 可以为空

phone_ip:  手机的ip地址

stream_type: 支持的流协议, 目前支持tcp, rtsp, 值为字符串型,值为h264表示采用tcp协议,值为rtsp表示采用rtsp协议。

  • 采用推流方式的二维码数据格式如下: “6|router_ssid|router_password|rtmp_url”

6: 表示支持相机以rtmp直推方式登录远程会议系统

router_ssid:  表示外接Wi-Fi路由器或个人热点的SSID

router_password:  表示外接Wi-Fi路由或个人热点的Password, 可以为空

rtmp_url:  推流地址


三、手机如何发现设备


 如果采用拉流方式获取rtsp或tcp视频流, 手机APP需要知道相机的IP地址, 相机通过UDP广播包广播自己的IP地址。

相机设置成功后,再次开机会自动连接路由器,进入云视频模式。手机APP按设定的的设备发现协议可以找到周围的设备,如:


相机连接上路由器后会采用简单的UDP广播包来作为设备在线的心跳包,相机每隔2秒广播一个心跳包,其中心跳包的格式: “5|16位序列号|相机型号|状态”,其中:

5: 表示这是一个心跳包

16位序列号: 为相机的唯一序列号, 如“fd99652018092001”

相机型号: 相机返回的型号,如”X1_G”,“G4K_Q”

状态: 如果是数字,如值“16”表示取了手机IP地址“192.168.1.16”末位,用来表示相机正在被IP地址末位为“16”的手机占用, 如果为字符“N”, 表示没有设备连着相机,可以被其它设备使用, 这样保证一次只能一台手机使用相机。


四、手机查询设备及锁定设备


4.1 查询设备“CAM”命令

手机APP可以发UDP广播包“CAM”来查询相机是否在线以及相机的信息,相机收到命令回复:“1|16位序列号|X1_G|固件版本号|相机IP”,使用该命令可以获取相机的IP地址,还有相机的固件版本号,判断是否有相机在线,或相机是否需要升级固件。

4.2 锁定设备“USE”命令

    手机APP发UDP广播包“USE|IP末位”来锁定相机,IP末位为手机的IP地址末位,这样相机将不可被其它终端连接,相机返回的心跳包状态位为手机的IP地址的末位。

4.3 解锁设备“RELEASE”命令

    手机APP发UDP广播包“RELEASE|IP末位”来解锁相机,这样相机处理空闲状态,表示可以被其它终端连接,相机返回的心跳包状态位为“N”。


五、如何获取实时视频流


5.1  TCP协议

5.1.1 配置

缺省情况下,相机视频流的默认传输协议为TCP方式, 即相机作为了流服务器提供H264格式的RAW视频数据,客户端采用TCP协议获取一帧一帧的H264视频帧,该种协议只支持获取视频流,没有声音。


5.1.2 获取TCP视频流:

通过前面的心跳包或查询相机命令可以获得相机的IP地址,播放器直接使用URL“tcp://192.168.XX.XX:8001”,即可获得TCP协议的视频流, 其中“192.168.XX.XX”为相机的IP地址,“8001”为端口号。

如可以使用ffplay播放器,采用如下命令来播放视频流:

ffplay -fflags nobuffer -analyzeduration 1000 tcp://192.168.1.16:8001

5.2  RTSP视频流

5.2.1 配置

相机也可以提供标准的RTSP协议的视频流方式,如果希望相机提供RTSP视频流, 可以在APP中的使用如下二维码:

4|foream_dev|foreamqwe123|192.168.1.14|rtsp_a9


5.2.2 获取RTSP视频流

播放器直接使用URL “rtsp://192.168.XX.XX/live”,即可获得RTSP协议的视频流, 其中“192.168.XX.XX”为相机的IP地址。

如可以使用ffplay播放器,采用如下命令来播放视频流:

fplay -fflags nobuffer rtsp://192.168.1.16/live

PC端也可以通过VLC来播放视频流,请参考相关文档。


六、如何设置视频流参数


缺省情况下,相机视频流的分辨率为WVGA即(848*240),帧率为30fps, 码率为“1.5Mbps”,手机APP可以通过WiFi,采用tcp协议来设置相机的参数,请参考[Drift 相机API 接口全集]文档。



文档更新时间: 2019-03-19 16:26   作者:admin