Sony remote camera API QX 10, Response Code Error: 403
Sony remote camera API QX 10, Response Code Error: 403
我正在尝试向 Open camera 项目 (https://github.com/almalence/OpenCamera) 添加对 Sony 远程摄像头 API 的支持
首先,我下载示例应用程序并尝试将其集成到 Open camera。因此,我可以搜索设备甚至启动 Liveview。但我想更多地控制相机参数。因此,我实现了一些方法来获取有关相机参数的信息。例如,为了获得可用的曝光补偿,我执行以下操作:
public JSONObject getAvailableExposureCompensation() throws IOException {
String service = "camera";
try {
JSONObject requestJson =
new JSONObject().put("method", "getAvailableExposureCompensation") //
.put("params", new JSONArray()).put("id", id()) //
.put("version", "1.0");
String url = findActionListUrl(service) + "/" + service;
log("Request: " + requestJson.toString());
String responseJson = SimpleHttpClient.httpPost(url, requestJson.toString());
log("Response: " + responseJson);
return new JSONObject(responseJson);
} catch (JSONException e) {
throw new IOException(e);
}
}
它只是示例应用程序中另一个方法的修改副本。
当我连接到 Sony qx 10 并尝试获取有关曝光补偿的信息时,出现异常:
03-03 00:25:31.098: W/SimpleHttpClient(32662): httpPost: Response Code Error: 403: http://10.0.0.1:10000/sony/camera
03-03 00:25:31.098: W/SimpleHttpClient(32662): httpPost: IOException: Response Error:403
03-03 00:25:31.098: W/System.err(32662): java.io.IOException: Response Error:403
03-03 00:25:31.098: W/System.err(32662): at com.almalence.sony.cameraremote.utils.SimpleHttpClient.httpPost(SimpleHttpClient.java:180)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.sony.cameraremote.utils.SimpleHttpClient.httpPost(SimpleHttpClient.java:135)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.sony.cameraremote.SimpleRemoteApi.getAvailableWhiteBalance(SimpleRemoteApi.java:414)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.opencam.cameracontroller.SonyRemoteCamera.getSupportedWhiteBalance(SonyRemoteCamera.java:825)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.opencam.cameracontroller.SonyRemoteCamera.initRemoteCameraFeatures(SonyRemoteCamera.java:667)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.opencam.cameracontroller.SonyRemoteCamera.run(SonyRemoteCamera.java:274)
403 Forbidden
同样的结果还有其他请求,例如:getAvailableWhiteBalance、getAvailableFocusMode、getAvailableIsoSpeedRate、getAvailableStillSize...
但另一方面,Sony 的 PlayMemories 应用程序具有曝光补偿控制和不同的白平衡模式。
我错过了什么?或者 PlayMemories 应用程序有一些 hack 来解决这个问题?
EDIT:
我在尝试过程中发现的:
- qx10(和其他一些设备)不支持 getAvailableLiveviewSize。但是,如果我需要有关 Liveview 大小的信息,该怎么办?有没有其他方法可以测量预览图像?
- getAvailableStillSize、getAvailableExposureCompensation、getAvailableWhiteBalance、getAvailableFocusMode、getAvailableIsoSpeedRate - 此方法声明为 qx10 支持,并且设备表示它们甚至可用。但是对他们的请求以 403 错误响应。为什么?可能有一些特殊的请求顺序,或者我应该更改 "version" 请求字段?现在我使用 1.0 版本,作为文档中的示例。
- Sony PlayMemories 可以控制曝光和白平衡。所以,至少这 2 个参数应该适用于我的 qx10 设备。或者它使用其他一些 API,不适用于第 3 方开发人员?
EDIT 2:
所以,我可以获得可用尺寸:
03-10 13:22:50.820: D/SimpleRemoteApi(4418): Request: {"method":"getAvailableStillSize","params":[],"id":10,"version":"1.0"}
03-10 13:22:50.826: D/SimpleRemoteApi(4418): Response: {"id":7,"result":[{"aspect":"4:3","size":"18M"},[{"aspect":"4:3","size":"18M"},{"aspect":"4:3","size":"5M"},{"aspect":"16:9","size":"13M"},{"aspect":"16:9","size":"2M"}]]}
但是当我尝试获得可用的曝光补偿时:
03-10 13:22:50.830: D/SimpleRemoteApi(4418): Request: {"method":"getAvailableExposureCompensation","params":[],"id":11,"version":"1.0"}
03-10 13:22:51.012: D/SimpleRemoteApi(4418): Response: {"error":[1,""],"id":11}
根据文档,错误代码 1 很常见。因此,没有关于问题的任何细节。同样的错误有 getISOmodes 和 getWBModes 请求。
QX10 不支持您尝试调用的某些 API。请参阅相机遥控器 API SDK 随附的 API 参考 PDF 中的 "Supported API groups for each compatible cameras" 部分。
关于编辑 2:
发生这种情况很可能是因为您的模式设置为智能或高级自动。尝试使用 setExposureMode API 更改为程序自动、光圈或快门,然后再次尝试调用 getAvailableExposureCompensation。
此外,客户端应用程序可以使用“getAvailableApiList”API或“getEvent”API获取可用API列表,应用程序可以提前确认有 API 个可用。
我正在尝试向 Open camera 项目 (https://github.com/almalence/OpenCamera) 添加对 Sony 远程摄像头 API 的支持
首先,我下载示例应用程序并尝试将其集成到 Open camera。因此,我可以搜索设备甚至启动 Liveview。但我想更多地控制相机参数。因此,我实现了一些方法来获取有关相机参数的信息。例如,为了获得可用的曝光补偿,我执行以下操作:
public JSONObject getAvailableExposureCompensation() throws IOException {
String service = "camera";
try {
JSONObject requestJson =
new JSONObject().put("method", "getAvailableExposureCompensation") //
.put("params", new JSONArray()).put("id", id()) //
.put("version", "1.0");
String url = findActionListUrl(service) + "/" + service;
log("Request: " + requestJson.toString());
String responseJson = SimpleHttpClient.httpPost(url, requestJson.toString());
log("Response: " + responseJson);
return new JSONObject(responseJson);
} catch (JSONException e) {
throw new IOException(e);
}
}
它只是示例应用程序中另一个方法的修改副本。
当我连接到 Sony qx 10 并尝试获取有关曝光补偿的信息时,出现异常:
03-03 00:25:31.098: W/SimpleHttpClient(32662): httpPost: Response Code Error: 403: http://10.0.0.1:10000/sony/camera
03-03 00:25:31.098: W/SimpleHttpClient(32662): httpPost: IOException: Response Error:403
03-03 00:25:31.098: W/System.err(32662): java.io.IOException: Response Error:403
03-03 00:25:31.098: W/System.err(32662): at com.almalence.sony.cameraremote.utils.SimpleHttpClient.httpPost(SimpleHttpClient.java:180)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.sony.cameraremote.utils.SimpleHttpClient.httpPost(SimpleHttpClient.java:135)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.sony.cameraremote.SimpleRemoteApi.getAvailableWhiteBalance(SimpleRemoteApi.java:414)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.opencam.cameracontroller.SonyRemoteCamera.getSupportedWhiteBalance(SonyRemoteCamera.java:825)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.opencam.cameracontroller.SonyRemoteCamera.initRemoteCameraFeatures(SonyRemoteCamera.java:667)
03-03 00:25:31.098: W/System.err(32662): at com.almalence.opencam.cameracontroller.SonyRemoteCamera.run(SonyRemoteCamera.java:274)
403 Forbidden
同样的结果还有其他请求,例如:getAvailableWhiteBalance、getAvailableFocusMode、getAvailableIsoSpeedRate、getAvailableStillSize...
但另一方面,Sony 的 PlayMemories 应用程序具有曝光补偿控制和不同的白平衡模式。
我错过了什么?或者 PlayMemories 应用程序有一些 hack 来解决这个问题?
EDIT:
我在尝试过程中发现的:
- qx10(和其他一些设备)不支持 getAvailableLiveviewSize。但是,如果我需要有关 Liveview 大小的信息,该怎么办?有没有其他方法可以测量预览图像?
- getAvailableStillSize、getAvailableExposureCompensation、getAvailableWhiteBalance、getAvailableFocusMode、getAvailableIsoSpeedRate - 此方法声明为 qx10 支持,并且设备表示它们甚至可用。但是对他们的请求以 403 错误响应。为什么?可能有一些特殊的请求顺序,或者我应该更改 "version" 请求字段?现在我使用 1.0 版本,作为文档中的示例。
- Sony PlayMemories 可以控制曝光和白平衡。所以,至少这 2 个参数应该适用于我的 qx10 设备。或者它使用其他一些 API,不适用于第 3 方开发人员?
EDIT 2:
所以,我可以获得可用尺寸:
03-10 13:22:50.820: D/SimpleRemoteApi(4418): Request: {"method":"getAvailableStillSize","params":[],"id":10,"version":"1.0"}
03-10 13:22:50.826: D/SimpleRemoteApi(4418): Response: {"id":7,"result":[{"aspect":"4:3","size":"18M"},[{"aspect":"4:3","size":"18M"},{"aspect":"4:3","size":"5M"},{"aspect":"16:9","size":"13M"},{"aspect":"16:9","size":"2M"}]]}
但是当我尝试获得可用的曝光补偿时:
03-10 13:22:50.830: D/SimpleRemoteApi(4418): Request: {"method":"getAvailableExposureCompensation","params":[],"id":11,"version":"1.0"}
03-10 13:22:51.012: D/SimpleRemoteApi(4418): Response: {"error":[1,""],"id":11}
根据文档,错误代码 1 很常见。因此,没有关于问题的任何细节。同样的错误有 getISOmodes 和 getWBModes 请求。
QX10 不支持您尝试调用的某些 API。请参阅相机遥控器 API SDK 随附的 API 参考 PDF 中的 "Supported API groups for each compatible cameras" 部分。
关于编辑 2: 发生这种情况很可能是因为您的模式设置为智能或高级自动。尝试使用 setExposureMode API 更改为程序自动、光圈或快门,然后再次尝试调用 getAvailableExposureCompensation。
此外,客户端应用程序可以使用“getAvailableApiList”API或“getEvent”API获取可用API列表,应用程序可以提前确认有 API 个可用。