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

2025-10-05 01:16:59 7538

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++,Csharp,Ionic,Python,Swift的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.2,win-x64和win-x86的都下载好,分别是vlc-3.0.9.2-win32.7z和vlc-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/preview和webcam/start

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

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

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

我们需要修改videoPath

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

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

Copyright © 2022 世界杯积分_上一届世界杯冠军 - f0cai.com All Rights Reserved.