我正在尝试增加对索尼远程摄像头API的支持,以打开相机项目(https://github.com/almalence/OpenCamera)。
首先,我下载示例应用程序并尝试将其集成到Open中。所以,我可以搜索设备,甚至启动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);
}
}它只是来自示例应用程序的另一个方法的修改副本。
当我连接到索尼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$3.run(SonyRemoteCamera.java:274)403禁止
同样的结果还有其他请求,如: getAvailableWhiteBalance、getAvailableFocusMode、getAvailableIsoSpeedRate、getAvailableStillSize.
但另一方面,索尼的PlayMemories应用程序有曝光补偿控制和不同的白平衡模式。
我错过了什么?或者PlayMemories应用程序有一些黑客,来解决这个问题?
编辑:
我在尝试中发现的是:
编辑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请求也有相同的错误。
发布于 2015-03-02 21:50:18
您试图调用的一些API在QX10上不受支持。请参阅随相机远程API附带的API参考PDF中的“每个兼容摄像机的受支持API组”一节。
关于编辑2:这很可能是因为您的模式被设置为智能或高级自动。尝试使用setExposureMode API更改为“程序自动、孔径”或“关闭”,然后再次调用getAvailableExposureCompensation。
此外,客户端应用程序目前可以使用“getAvailableApiList”API或“getEvent”API获取可用API列表,并且应用程序可以预先确认哪些API是可用的。
https://stackoverflow.com/questions/28817365
复制相似问题