1. 背景

一个需求 : 我们需要自己去接入GoPro,在自己的App上去控制GoPro。

GoPro接入文档 : Open GoPro 文档

GoPro的开放API网上相关的资料较少,所以只能拿着GoPro的官方文档死磕了。

2. GoPro支持的连接方式

打开GoPro的官方文档,可以看到,GoPro支持3种连接方式,分别是蓝牙、Wifi和USB

3. GoPro连接的Demo

我们来看下GoPro提供的Demo:Demos : Open GoPro

可以看到,有C,C++CsharpIonicPythonSwift的Demo,但就是没有Android的Demo,这就很尴尬了。

为了验证连接的可行性,我们选择下载Csharp的Demo,来进行试验。
只要C#的demo跑通了,后期完全就可以移植到Android上了。

3.1 下载Demo

  • GoProCSharpSample

    • 使用蓝牙发现、配对、连接和控制GoPro的Demo
  • CSharp Webcam Demo
    • 使用Wifi和USB的方式连接GoPro来实现网络摄像头的Demo

3.2 下载并安装Visual Studio

这里下载社区版(免费)的Visual Studio就可以了

Visual Studio 下载地址 : Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器 (microsoft.com)

3.3 配置环境

在CSharp Webcam Demo这个项目中,用到了vlc,所以我们需要先下载vlc

libvlc下载地址 : libvle下载 /pub/videolan/vlc/

这里,我下载了3.0.9.2win-x64win-x86的都下载好,分别是vlc-3.0.9.2-win32.7zvlc-3.0.9.2-win64.7z

然后解压后,将vlc相关文件复制到项目名\bin\Debug\libvlc\win-x64项目名\bin\Debug\libvlc\win-x86文件夹下


对应的Demo中的C#代码为

var vlcLibDirectory = new DirectoryInfo(System.IO.Path.Combine("./", "libvlc", IntPtr.Size == 4 ? "win-x86" : "win-x64"));
mPlayer.SourceProvider.CreatePlayer(vlcLibDirectory, options);

4.运行Demo程序

4.1 运行GoProCSharpSample程序

这是个使用低功耗蓝牙,对GoPro进行操作的Demo

这里有几个按钮说明下

  • Scan : 扫描蓝牙
  • Pair : 进行配对
  • Connect : 进行蓝牙连接
  • Read AP Name : 读取WIFI的名称
  • READ AP Pass : 读取WIFI的密码
  • WIFI AP ON : 打开WIFI开关
  • WIFI AP OFF : 关闭WIFI开关
  • Shutter ON : 开始录像
  • Shutter OFF : 停止录像
  • Encoding : 是否是录像状态
  • Wifi on : WIFI状态

这里我们需要读取到WIFI的名称和密码,然后打开WIFI快关

4.2 连接GoPro Wifi

我们这里手动将笔记本电脑连接上GoPro的WIFI,WIFI的名称和密码是通过GoProCSharpSample程序读取到的

4.3 运行CSharp Webcam Demo程序 (WIFI模式)

运行前先在代码里把ipaddr这个常量值进行修改。

ipaddr = Properties.Settings.Default.IPAddress;

修改为

ipaddr = "10.5.5.9"; //这个IP地址是GoPro指定的

注释这一行

new Timer(IPAddrCheck, this, 50, 10000);

修改HTTP URL

SendHTTPRequest("webcam/preview") 修改为 SendHTTPRequest("camera/stream/preview")
SendHTTPRequest("webcam/start") 修改为 SendHTTPRequest("camera/stream/start")
SendHTTPRequest("webcam/stop") 修改为 SendHTTPRequest("camera/stream/stop")
SendHTTPRequest("webcam/exit") 修改为 SendHTTPRequest("camera/stream/exit")

WIFI模式用的camera/stream/XXX,USB模式用的webcam/XXX

然后运行程序

先点击Start Player,是Player状态为enabled。然后点击Start WebCam,点击Show Preview

可以看到,已经显示出GoPro摄像头实时的画面了

4.4 运行CSharp Webcam Demo程序 (USB模式)

如果需要通过USB数据线的方式,使GoPro变成一个网络摄像头,那么,我们需要先在电脑上安装好

我们可以先下载安装GoPro Webcam 桌面程序 GoProWebcam-RELEASE.msi,安装过程中会自动安装好GoPro所需要的驱动的。

我们可以先打开GoPro Webcam程序,看下画面能否正常显示。

如果能够正常显示,说明驱动安装正确。

然后,在运行前, 我们先在代码里把ipaddr这个常量值进行修改

ipaddr = Properties.Settings.Default.IPAddress;

修改为

ipaddr = 172.2X.1YZ.51
  • X 是 GoPro serial number 从右往左第三位值
  • Y 是 GoPro serial number 从右往左第二位值
  • Z 是 GoPro serial number 从右往左第一位值

比如,你的GoPro serial number是C0000123456789,那么USB连接的IP是172.27.189.51

修改回HTTP URL,如果4.3 运行CSharp Webcam Demo程序 (WIFI模式)这边没有修改过,则不需要修改

SendHTTPRequest("camera/stream/preview") 修改为 SendHTTPRequest("webcam/preview")
SendHTTPRequest("camera/stream/start") 修改为 SendHTTPRequest("webcam/start")
SendHTTPRequest("camera/stream/stop") 修改为 SendHTTPRequest("webcam/stop")
SendHTTPRequest("camera/stream/exit") 修改为 SendHTTPRequest("webcam/exit")

WIFI模式用的camera/stream/XXX,USB模式用的webcam/XXX

我们打开CSharp Webcam Demo程序

先点击Start Player,是Player状态为enabled。然后点击Start WebCam,点击Show Preview

可以看到,已经显示出GoPro摄像头实时的画面了

5.使用VLCPlayer播放视频

可以电脑连接GoPro Wifi后,使用widnows自带的VLCPlayer,播放GoPro的视频流,测试成功能正常播放后,再运行demo进行试验。

6. 在手机上显示GoPro的画面

根据文档和Demo代码可知,GoPro的视频流通过udp://@0.0.0.0:8554来进行传输的

private void btnStartPlayer_Click(object sender, RoutedEventArgs e)
{Log("Starting video player...\n");ThreadPool.QueueUserWorkItem(_ =>{mPlayer.SourceProvider.MediaPlayer.Play(new Uri("udp://@0.0.0.0:8554", UriKind.Absolute), new string[] { "--network-caching=10", "--no-audio" });});playerEnabled = true;
}

所以,我们可以将手机连接到GoPro上,然后实时接收这个视频数据

首先,我们在电脑上,先使用GoProCSharpSample程序获取wifi名称和密码,并打开wifi

然后,需要在手机上写一个程序,访问HTTP接口 webcam/previewwebcam/start

(哪端发送了这些接口,会被GoPro记录,才能有权限接收到udp://@0.0.0.0:8554发送的数据)

最后,下载Android IjkPlayer 播放RTSP视频流 Demo

使用B站开源的IjkPlayer,进行视频的播放

我们需要修改videoPath

String videoPath = "udp://@0.0.0.0:8554";

即,访问了 webcam/previewwebcam/start 接口后,再运行IjkPlayerDemo程序,就可以在手机上看到GoPro摄像头上实时的画面了
当然,GoProCSharpSample程序这些蓝牙操作的部分,手机端也是可以实现的,官方也提供了文档Bluetooth Low Energy (BLE) Specifications : Open GoPro
有兴趣的小伙伴也可以自己实现一下。

GoPro接入 - 根据GoPro官方文档/Demo,实现对GoPro的控制和预览相关推荐

  1. 每天一小时python官方文档学习(二)————流程控制工具

    4. 其他流程控制工具 4.1. if 语句 大多数人都很熟悉的if语句: if condition1:pass elif condition2:pass else condition3:pass 注 ...

  2. 谷歌浏览器插件Automa_0.自我见解及官方文档

    待成长的无代码化爬虫 很抱歉在开头就泼你一盆冷水,遗憾地说Automa并不完美,或许是因为其有待成长(每次打开都会发现变了个样),但其所见即所得的体验依旧深深吸引着我.(因edge全局快捷键的完善,我 ...

  3. 微信小程序联盟:官方文档+精品教程+demo集合(12月更新……)

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  4. 微信小程序导航:官方文档+精品教程+demo集合(5月9日更新)

    微信小程序联盟:官方文档+精品教程+demo集合 1:官方工具:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=1 ...

  5. 八月微信小程序导航:官方文档+精品教程+demo集合(8月25...

    2019独角兽企业重金招聘Python工程师标准>>> 1:官方工具: https://mp.weixin.qq.com/debug/w ... tml?t=147643467846 ...

  6. 微信小程序导航:官方文档+精品教程+demo集合(5月31日更新)

    官方文档 1:官方工具:https://mp.weixin.qq.com/debug/w - tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/d ...

  7. spark之4:基础指南(源自官方文档)

    spark之4:基础指南(源自官方文档) @(SPARK)[spark, 大数据] spark之4基础指南源自官方文档 一简介 二接入Spark 三初始化Spark 一使用Shell 四弹性分布式数据 ...

  8. ExoPlayer详解(官方文档-入门)

    目录 ExoPlayer详解系列文章-入门 一.前言 二.优缺点比较 三.概述 ExoPlayer详解--入门(官方文档) 添加ExoPlayer作为依赖项 1.添加依赖 2.添加ExoPlayer模 ...

  9. 基于vue的微信小程序开发5分钟上手教程(官方文档转)

    使用手册 mpvue 继承自 Vue.js,其技术规范和语法特点与 Vue.js 保持一致. 注:其实就是官方文档,只是习惯看博文学习才直接copy过来的,详见官方文档 本文档适用于有一定 Vue.j ...

最新文章

  1. 白盒测试黑盒测试和单元测试集成测试和系统测试的关系
  2. HwBinder原理总结-Android10.0 HwBinder通信原理(十一)
  3. oracle常用关键字和函数
  4. 怎么看空调定时成功_风管机和中央空调傻傻分不清?看了你就明白怎么选了
  5. 横流式冷却塔计算风量_冷却塔空气动力是怎么计算的?
  6. 人工智能选go还是python_深圳人工智能学Python还是go,真实经历分享
  7. java学习(87):Interage包装类进制转换
  8. tensorflow--GPU
  9. 命令行模式下编译多个C/C++源文件
  10. 数学建模竞赛赛前准备及资源分享
  11. justinmind导出html,Justinmind Prototyper(原型创建软件)官方版
  12. IDEA控制台设置查找快捷键
  13. java高德点到ian距离,高德地图(点到线段的最短距离算法)不调用高德API
  14. assert()使用
  15. 查询数据库中的重复数据记录
  16. KeePass 2.42.1 简体中文翻译
  17. 安装 VS2012/2013 完成时报错“无法建立到信任根颁发机构的证书链”
  18. 西门子/Siemens工业自动化系统SIMATIC控制器和SIMATIC ET 200 IO系统(PLC,HMI)
  19. Python字符串操作之常忘的字符串、列表、数值
  20. Echarts 象形图

热门文章

  1. 鄙视链是一种怪圈现象,那么IT行业也存在鄙视链吗?
  2. 扫描枪扫不到条码读不到条形码的解决方法
  3. Hadoop Java HotSpot(TM) Client VM warning: You have loaded library /
  4. arcsoft人脸识别sdk使用方法(java版本)
  5. 用MSComm控件实现来电显示
  6. 热力学分布用matlab,热力学matlab
  7. 3D模型【摩天大楼】
  8. 如何做优化SEO排名_海南哪个公司可以做_seo优化
  9. 百分之100用计算机是几个点,计算器百分比怎么用(带百分比的计算器)
  10. 网络营销课程实践感悟