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

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

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
有兴趣的小伙伴也可以自己实现一下。

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值