使用公开信息测试 RICOH THETA SC2 API

RICOH THETA SC2 的 API 请求。基于社区测试
公开的
API 参考文档,适用于 V 和 Z1。
这些测试不使用 SC2 API 文档,因为 SC2 API 未在
公开文档中列为受支持的相机。

SC2 API 与 V 和 Z1 的 API 不同。请参阅
此网站了解
更多信息。

截至 2020 年 7 月 16 日,SC2 API 的已知问题如下:

  • listFiles 不返回缩略图,即使为缩略图设置了参数
  • RICOH SDK 在 livePreview 帧上工作不可靠。会因 EOF 异常停止
  • 当向 SC2 发出某些命令时,livePreview 会停止
  • getMetaData 不返回正确的值
  • status 不能与 startCapture 一起使用。

有关更多信息,请参阅网站和书面指南。

SC2 API 与 Z1 API 类似。

更多信息可在 博客上找到

配置和安装

  1. 安装 dart
  2. 克隆此仓库
  3. 运行 pub get 安装依赖项

$ pub get
Resolving dependencies... (1.2s)
Downloading args 1.5.3...
Downloading http 0.12.0+4...
Downloading pedantic 1.9.0...
Downloading async 2.4.0...
Downloading source_span 1.6.0...
Downloading charcode 1.1.3...
Downloading meta 1.1.8...
Got dependencies!

用法

  1. 将工作站连接到 THETA,相机处于接入点 (AP) 模式
  2. bin 目录下运行 main.dart 文件,并附带相应的命令

带信息的示例

 dart bin/main.dart info

除了 info,您还可以使用其他命令

带状态的示例

dart bin/main.dart state

可用的命令

  • info
  • state
  • takePicture
  • listFiles
  • getOptions
  • downloadFile
  • getMetadata
  • firmware – 打印固件版本和相机型号
  • downloadReady – 拍照并检查照片是否已准备好下载
  • takeAndDownload – 拍照并下载,使用 osc/state 获取文件 URL
  • setExposureDelayFive – 设置自拍定时器为五秒
  • setExposureDelayZero – 关闭自拍定时器
  • setHdr – 公开 API 参考

说明

POST 示例

来自 THETA SC2 的响应

post state

拍照示例

如果您的
请求中包含类似 {'name': 'camera.takePicture'} 的有效负载,则必须将正文编码为 JSON。您可以使用 json.encode(your-payload-object)
或新的 jsonEncode() https://api.dart.ac.cn/stable/2.7.1/dart-convert/jsonEncode.html

take picture

来自 THETA SC2 的测试。OK!

SC2 的响应显示如下。

C:\Users\craigdev\Development\personal\dart>dart bin/main.dart
[]
200
{
  "name": "camera.takePicture",
  "id": "1588",
  "progress": {
    "completion": 0.0
  },
  "state": "inProgress"
}

列出文件

https://api.ricoh/docs/theta-web-api-v2.1/commands/camera.list_files/

这显示了一个更复杂的嵌套有效负载,带有参数。

响应

$ dart bin/main.dart 
[]
200
{
  "name": "camera.listFiles",
  "results": {
    "entries": [
      {
        "dateTimeZone": "2020:03:18 17:12:32-07:00",
        "fileUrl": "http://192.168.1.1/files/150100525831424d42079d18e0b6c300/100RICOH/R0010024.JPG",
        "height": 2688,
        "isProcessed": true,
        "name": "R0010024.JPG",
        "previewUrl": "",
        "_projectionType": "Equirectangular",
        "size": 4362617,
        "_thumbSize": 2749,
        "width": 5376
      },

获取选项

您想获取的相机选项需要在数组中单独指定。
我认为您无法使用通配符或“all”规范来获取所有选项。

数据请求的格式如下。

var url ='http://192.168.1.1/osc/commands/execute';

  Map data = {
    'name': 'camera.getOptions',
    'parameters': {
      'optionNames': [
        "iso",
        "isoSupport"
      ]
    }

运行固件 1.20 的 THETA SC2 的响应显示如下。

{
  "name": "camera.getOpions",
  "state": "done",
  "results": {
    "options": {
      "iso": 0,
      "isoSupport": [
        64,
        80,
        100,
        125,
        160,
        200,
        250,
        320,
        400,
        500,
        640,
        800,
        1000,
        1250,
        1600,
        2000,
        2500,
        3200
      ]
    }
  }
}

测试的相机固件

  • Z1 1.31.1
  • RICOH THETA SC 1.20
  • V 3.21.1

sc2 screenshot

相机故障排除

使用 GET info 测试连接

发送到相机的最简单命令是 GET info。

您可以在浏览器、curl、Postman 中进行测试。在测试程序中,您可以
查找下面的 URL。

String url = 'http://192.168.1.1/osc/info';

如果您在获取相机连接时遇到问题,并希望使用已知有效的 API 来测试您的
代码,该 API 可返回单个 JSON 对象,您可以使用公共 Internet 测试服务器返回单个 JSON 对象并打印出来。

// String url = 'https://swapi.co/api/people/1';
// String url = 'https://jsonplaceholder.typicode.com/users/1';

了解 我们为何使用 Dart

GitHub

查看 Github