Camera Remote API для Sony Ilce-7 Не удается перейти в режим передачи содержимого

Я смог заставить свою камеру a-7 делать снимки с помощью API. Однако я застрял, пытаясь передать эти изображения. Следуя документации, я вызвал setCameraFunction, чтобы изменить его на режим передачи содержимого, используя json ниже:

{"method":"setCameraFunction","params":["Contents Transfer"],"id":1,"version":"1.0"}

Однако камера всегда возвращается с:

{"id":1,"error":[1,"Not Available Now"]}

Ниже приведен вывод последовательности, которую я использую для получения изображения (5-секундная пауза между каждым вызовом):

Request: {"method":"startRecMode","params":[],"id":1,"version":"1.0"}
Response: {"result":[0],"id":1}

Request: {"method":"getAvailableShootMode","params":[],"id":1,"version":"1.0"}
Response: {"result":["still",["still"]],"id":1}

Request: {"method":"actTakePicture","params":[],"id":1,"version":"1.0"}
Response: {"result":[["http:\/\/192.168.122.1:8080\/postview\/pict20170707_003048_0.JPG"]],"id":1}

Request: {"method":"stopRecMode","params":[],"id":1,"version":"1.0"}
Response: {"result":[0],"id":1}

Request: {"method":"getStorageInformation","params":[],"id":1,"version":"1.0"}
Response: {"id":1,"error":[1,"Not Available Now"]}

Request: {"method":"setCameraFunction","params":["Contents Transfer"],"id":1,"version":"1.0"}
Response: {"id":1,"error":[1,"Not Available Now"]}

Иногда getStorageInformation возвращается с:

{
  "result": [
    [
      {
        "storageDescription": "Storage Media",
        "numberOfRecordableImages": 3275,
        "storageID": "Memory Card 1",
        "recordTarget": true,
        "recordableTime": -1
      }
    ]
  ],
  "id": 1
}

Однако при попытке перейти в режим содержимого всегда появляется сообщение «Сейчас недоступно».

Я смог получить доступ к изображению предварительного просмотра, используя URL-адрес, сгенерированный функцией actTakePicture, однако это изображение с низким разрешением, и оно не будет работать для нашего приложения.

Я также пытался не вызывать функцию «stopRecMode» перед попыткой войти в режим «Передача содержимого», но это не имело значения.

Вывод функции "getEvent" перед попыткой входа в режим Content Transfer:

{
  "result": [
    {
      "type": "availableApiList",
      "names": [
        "getVersions",
        "getMethodTypes",
        "getApplicationInfo",
        "getAvailableApiList",
        "getEvent",
        "startRecMode",
        "stopRecMode"
      ]
    },
    {
      "cameraStatus": "NotReady",
      "type": "cameraStatus"
    },
    null,
    {
      "type": "liveviewStatus",
      "liveviewStatus": false
    },
    null,
    [],
    [],
    null,
    null,
    null,
    [],
    null,
    {
      "cameraFunctionCandidates": [
        "Contents Transfer",
        "Remote Shooting"
      ],
      "type": "cameraFunction",
      "currentCameraFunction": "Remote Shooting"
    },
    null,
    null,
    null,
    null,
    null,
    null,
    {
      "postviewImageSizeCandidates": [
        "2M"
      ],
      "type": "postviewImageSize",
      "currentPostviewImageSize": "2M"
    },
    null,
    {
      "shootModeCandidates": [
        "still"
      ],
      "type": "shootMode",
      "currentShootMode": "still"
    },
    null,
    null,
    null,
    null,
    null,
    {
      "fNumberCandidates": [],
      "type": "fNumber",
      "currentFNumber": "--"
    },
    null,
    null,
    null,
    null,
    {
      "type": "shutterSpeed",
      "shutterSpeedCandidates": [],
      "currentShutterSpeed": "1/60"
    },
    {
      "type": "whiteBalance",
      "currentColorTemperature": -1,
      "checkAvailability": true,
      "currentWhiteBalanceMode": "Auto WB"
    },
    null
  ],
  "id": 1
}

Дополнительная информация:

Обновил камеру до последней прошивки (версия 3.20), установил последнее приложение Smart Remote Control (версия 4.30).

Я полностью застрял здесь, любой совет был бы потрясающим.

Спасибо


person Marius    schedule 06.07.2017    source источник


Ответы (1)


Мне удалось решить проблему, и я решил опубликовать ее здесь на случай, если она поможет кому-то еще.

Вместо использования режима «Передача содержимого» мне пришлось использовать «setPostviewImageSize» и установить исходное изображение для предварительного просмотра. С этим изменением URL-адрес, возвращаемый «actTakePicture», будет относиться к только что снятому изображению, а размер изображения будет иметь полное разрешение, в данном случае 6000x4000.

Вот json для запроса setPostviewImageSize:

    {
  "method": "setPostviewImageSize",
  "params": [
    "Original"
  ],
  "id": 1,
  "version": "1.0"
}
person Marius    schedule 12.07.2017