简介

概述

本开发包是卡菲单反无线取景控制器的SDK,可通过WIFI来无线控制单反相机拍摄和传输照片。支持以下功能:

卡菲单反无线取景控制器目前在摄影、新闻、医学、军事、科研等多个行业领域都有应用,欢迎广大开发者通过这个SDK开发出更多更好的解决方案。

本 SDK 使用 REST API 提供服务,iOS, Android, Windows, Mac OS 和 Linux 都可以使用

本 SDK 适用相机列表如下:

佳能

尼康

索尼

开发准备

硬件

卡菲单反无线取景控制器和单反相机

软件

卡菲使用 REST 协议向客户端提供服务。可以使用任何支持REST协议的开发库来开发卡菲 APP。

卡菲通过 Socket.IO 来发送事件。客户端需要安装支持 Socket.IO 的开发库来接收事件。

您可以使用以下开发库。

Windows, Mac OS:

SIOSocket v0.2.2

Download: https://github.com/Quobject/SocketIoClientDotNet

iOS:

SIOSocket v0.2.2

Download: https://github.com/MegaBits/SIOSocket

Android:

Socket.IO-client Java v0.3.1

Download: https://github.com/socketio/socket.io-client-java

REST API

默认 IP

卡菲单反无线取景控制器的默认IP为192.168.9.67或192.168.1.67.

照相

GET takepic/true
触发相机拍摄一张照片

返回 http status code 200 means OK, 500 means failed
当照片文件生成时,服务端会向客户端发送一次 file_add 事件,事件参数为文件路径。客户端可以通过此路径下载文件或缩略图。

监控相机拍摄

POST /tether/start
params: none

进入接收模式。当手动按相机快门拍摄时,服务端会向客户端发送一次 file_add 事件,事件参数为文件路径。客户端可以通过此路径下载文件或缩略图。
当一张照片从相机中删除时,将会发送一次 file_remove 事件,但没有参数。客户端需要重新读取文件列表一次以刷新文件列表。

停止相机监控

POST /tether/stop
停止相机监控.

读取照片列表

GET /files/$start/$count
It will list the images in the SD card.

Params:
$start: 从第几张照片开始,数据类型 integer
$count: 计划读取照片张数. 数据类型 Integer

如果调用成功,会返回如下格式的数组:
[ Storage001/DCIM/xxxx1.jpg,
Storage001/DCIM/xxxx2.jpg
...
]

需要注意的是申请张数不一定和返回张数相等。返回张数可能小于申请的张数。
状态代码: if execution is successful, the http status code will be 200 OK
Otherwise, it will return 500.

下载原图

GET /raw/$filepath
从相机中下载原始文件到客户端。

$filepath 是根据list命令中返回的照片路径.传入时需要进行url编码。编码格式如下:
%2Fstorage001%2FDCIM%2Fxxxx1.jpg

文件大小在返回的 hearder 中可以取到,Content-Length:xxxx
返回: 成功返回 状态代码 200 OK,否则返回状态代码 500.

下载缩略图

GET /thumbnail/$filepath
从相机中下载原始文件到客户端。

$filepath 是根据list命令中返回的照片路径.传入时需要进行url编码。编码格式如下:
storage001%2FDCIM%2Fxxxx1.jpg
文件大小在返回的hearder中可以取到,Content-Length:xxxx
返回: 成功返回 状态代码 200 OK,否则返回状态代码500.

下载预览图

GET /image/$filepath
从相机中下载预览图主要用于预览 Raw 文件。预览图格式为 JPEG

$filepath 是根据list命令中返回的照片路径.传入时需要进行url编码。编码格式如下:
storage001%2FDCIM%2Fxxxx1.jpg
返回: 成功返回 状态代码 200 OK,否则返回状态代码500.

状态代码: if execution is successful, the http status code will be 200 OK
Otherwise, it will return 500.

实时取景

GET /capturemovie
启动实时取景视频流。调用这个API,会创建一个TCP服务器,端口为890.客户端可以通过SOCKET端口,读取视频流。视频流格式为MJPEG.
返回: 成功返回 状态代码 200 OK,否则返回状态代码500.

GET /stopcapturemovie
关闭视频流 返回: 成功返回 状态代码 200 OK,否则返回状态代码500.

取得相机配置

GET /config
返回相机所有配置参数信息,包括光圈,ISO,快门速度和曝光模式。
返回结果示例:
Canon 7D
Nikon D5100

设置相机配置

PUT /setconfigvalue
参数: {name:foo, value:foo}
配置名称和值可以在 getconfig命令返回的结果中查找。佳能和尼康的不同相机在配置名称和值上有所区别。
返回: 成功返回 状态代码 200 OK,否则返回状态代码500.

检查固件版本

GET /info
返回: {version:xxxx, serial:xxxx}

获取附近的 WiFi 列表

GET /iwlist
获取 CamFi 附近的WiFi 列表,并返回如下格式的数组:
[{
"associated" : false;
"mac" : "aa:12:12:7a:93:2f";
"signal" : "-72.00";
"ssid" : "xxxxxxxxx";
}, ...]

获取网络模式信息

GET /networkmode
获取 CamFi 当前的网络模式信息,并返回如下格式的信息:
{
"ap_encryption" : "";
"ap_ssid" : "xxxxxxxxx";
"mode" : "sta";
"sta_encryption" : "psk2";
"sta_ssid" : "xxxxxxxxx";
}
mode : sta 表示当前 CamFi 为 Bridge Mode, mode : ap 表示当前 CamFi 为 AP mode。 sta_encryption 表示桥接路由的密码加密模式

设置网络模式

POST /networkmode
可以把 CamFi 设置为 AP 模式或者 Bridge 模式。

Params:
AP Mode: { "mode":"ap" | "sta" }
Bridge Mode: { "mode":"sta", "router_ssid":foo, "password":foo, "encryption":psk | psk2 | ... }


mode : sta 表示将把 CamFi 设为 Bridge Mode, mode : ap 表示将把 CamFi 为 AP mode。
sta_encryption 表示桥接路由的密码加密模式

返回: 成功返回 状态代码 200 OK,否则返回状态代码 500。

服务器事件

连接服务器

示例( Windows ):

Quobject.SocketIoClientDotNet.Client.IO.Options options = new IO.Options();
options.ForceNew = true;
options.Multiplex = true;
socket = IO.Socket(InteractionApis.BaseUriString + ":8080", options);

接收事件

示例(Windows):

 socket.On("file_added", new Action<object>((filename) =>
            {
                try
                {
                    this.Dispatcher.Invoke(new Action(() =>
                    {
                        string name = filename.ToString();
                        if (page != null)
                        {
                            page.FileAdded(name);
                        }

                    }));
                }
                catch { }
            }));

事件列表

camera_add

相机连接成功

camera_remove

相机断掉

liveshow_error

实时取景发送错误

file_added

新照片创建

timelaspe_error

定时拍照错误

Demo 下载

iOS demo 下载

http://cam-fi.com/sdk/camfidemo.zip

Android demo 下载

http://cam-fi.com/sdk/CamFiDemo_android.zip

Windows demo 下载

http://cam-fi.com/sdk/SocketIoDemo.zip