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

news/2025/2/14 7:13:00/

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

在这里插入图片描述


http://www.ppmy.cn/news/235753.html

相关文章

GoPro实时图片传输

基于Open GoPro库与相机连接进行传输 Open GoPro : Open GoPro 基于HTTP方式传输 基于HTTP方式传输分为preview stream、webcam两种方法。 其中preview为无线传输。 preview stream未说明最高支持的分辨率,参考这篇GitHub的提问(下方链接&#xff09…

gopro 8 发布

gopro 8已经发布,有什么特点呢? 1、比前一版薄。 2、镜头不可拆卸。 3、自带固定接口,无需安装外框。 4、电池升级,使用老版电池报错。 5、去除hdmi接口,只有type-c口,连接显示器需要转换器。 6、麦克风和灯光以及…

GOPRO 6 相关

最近入手GOPRO 6 想拍VLOG,将它的特点等相关信息,做个备忘; 一、特点: 1:重量较轻(118克)2:裸机入水(自带防水无需加壳)3:六轴防震(可以不用稳定手…

gopro6 连接电脑_如何将外部麦克风连接到GoPro

gopro6 连接电脑 Most of the time, your GoPro will be attached to a helmet, car, bike, or other piece of moving machinery. But if you want to capture better audio, and don’t mind a bit of added bulk to your setup, here’s how you can connect an external mi…

使用pc控制GOPRO6拍照

方法如下: 1、在GoPro6触摸屏向下滑动“连接”-"连接新的设备-"GoPro 应用”。 2、出现“等待应用”,显示GoPro 的相机名称以及密码。 3、在pc端,点击wifi标志,选择gp打头的wifi id,显示“断开连接”即表示连…

浏览器的渲染原理

网页的解析过程 ◼ 常见的浏览器内核有  Trident ( 三叉戟):IE、360安全浏览器、搜狗高速浏览器、百度浏览器、UC浏览器;  Gecko( 壁虎) :Mozilla Firefox;  Presto&#xff…

微星MAG B650M mortar wifi主板设置温度墙

小弟的新电脑是AMD 7950X MAG B650M主板,都已经按水冷了,一开烘焙电脑CPU温度马上飚到83以上-90,再偶尔打开其他东西就瞬间蓝屏,我估计就是cpu温度过高给整蓝了(后来即使我改温度墙还是会死机,我发现内存条…

pyecharts x轴字体大小调整_pyecharts 柱状图基础篇#学习笔记#

2020年初,很久没有用过pyecharts的我由于工作原因,安装了新版pyecharts之后,以前的pyecharts代码报错了。搜索之后才发现,我安装的是不兼容旧版本的新版。 空闲的时间,把新版echart当作新的模块梳理了一下,整理为便于理解的形式。 参考网址:A Python Echarts Plotting L…