我在哪里可以找到索尼DSC-HX50V的远程API?

问题描述 投票:0回答:3

关于 https:/developer.sony.comdevelopcameras。 我只能找到DSC-HX60的远程API。

camera sony
3个回答
0
投票

事实上,该表显示了所有支持Camera Remote API的摄像机,以及您可以在每台摄像机上使用API的哪些功能。如果你有一台相机在列表中,你只需要检查你的相机支持哪些API功能,然后就可以开始开发了。

https:/developer.sony.comdevelopcamerasget-started(开发相机入门)。


0
投票

我发现,相机远程API样本不能从索尼DSC-HX50v与固件版本1.00开箱工作。

我已经成功与 延时摄影-索尼 不过程序。谢谢你ThibaudM! 有一个参考 本帖 这也许能说明HX50V的情况。看来是有限的wifi控制功能。

亲爱的索尼工程师,请您为该机型申请一个更新的固件版本,支持通过wifi控制全部相机。


0
投票

所以我在研究这些apis,以便(ab)将我的HX50V相机作为一个网络摄像头。最后,对我来说,可用的远程控制的数量太有限了,但这似乎是一个合适的地方来分享我所发现的。

下面的内容是基于PC的连接,而不是智能手机,并且也适用于其他索尼型号。所有这些都记录在 索尼SDK 但我希望能把话说得更简洁一些。

1. 设置一个wifi连接到你的相机

  • 启用 用智能手机按Ctrl键 通过相机菜单
  • 将你的电脑wifi连接到你的相机的SSID上,在我的例子中,"DIRECT-XXXX:DSC-HX50V",其中XXXX和其余部分可能会根据你的相机型号不同而不同(我建议有一个有线网络连接,否则:在篡改你的相机时,你没有网络)。
  • 当发送的请求不够时,这个连接会超时,如:wifi断线。只需重新连接wifi,就能再次发送请求。

2. 发现你的摄像机api网址。SSDP(可选)。

在ThibaudM的配置中,有一个已知的索尼相机api urls的列表,在提到的。延时摄影-索尼 项目,但对于通用的解决方案,你需要先做这个。如果你对通用方案不感兴趣,并且已经知道你的相机api URL,就跳到3.。

索尼SDK说,你需要做一个SSDP M-Search发现请求来找出你的相机的api。开发者指南的第10页)。这是一个特定形式的UDP广播,返回UPnP设备。下面是一个随时可以运行的powershell脚本(修改后的代码来自于 此处)

#Use unused port or it will fail
$LocalEndPoint = New-Object System.Net.IPEndPoint([ipaddress]::Any,$Port)

$MulticastEndPoint = New-Object System.Net.IPEndPoint([ipaddress]::Parse("239.255.255.250"),1900)
$UDPSocket = New-Object System.Net.Sockets.Socket([System.Net.Sockets.AddressFamily]::InterNetwork,[System.Net.Sockets.SocketType]::Dgram,[System.Net.Sockets.ProtocolType]::Udp)
$UDPSocket.SetSocketOption([System.Net.Sockets.SocketOptionLevel]::Socket, [System.Net.Sockets.SocketOptionName]::ReuseAddress,$true)

$UDPSocket.Bind($LocalEndPoint)
$UDPSocket.SetSocketOption([System.Net.Sockets.SocketOptionLevel]::IP,[System.Net.Sockets.SocketOptionName]::AddMembership, (New-Object System.Net.Sockets.MulticastOption($MulticastEndPoint.Address, [ipaddress]::Any)))
$UDPSocket.SetSocketOption([System.Net.Sockets.SocketOptionLevel]::IP, [System.Net.Sockets.SocketOptionName]::MulticastTimeToLive, 2)
$UDPSocket.SetSocketOption([System.Net.Sockets.SocketOptionLevel]::IP, [System.Net.Sockets.SocketOptionName]::MulticastLoopback, $true)

#Write-Host "UDP-Socket setup done...`r`n"
#All SSDP Search
$SearchString = @"
M-SEARCH * HTTP/1.1
HOST:239.255.255.250:1900
MAN:"ssdp:discover"
ST:urn:schemas-sony-com:service:ScalarWebAPI:1
MX:3


"@
#^ 2 enters are important! leave in place.

$UDPSocket.SendTo([System.Text.Encoding]::UTF8.GetBytes($SearchString), [System.Net.Sockets.SocketFlags]::None, $MulticastEndPoint) | Out-Null

#Write-Host "M-Search sent...`r`n"

[byte[]]$RecieveBuffer = New-Object byte[] 64000
[int]$RecieveBytes = 0

$Response_RAW = ""
$Timer = [System.Diagnostics.Stopwatch]::StartNew()
$Delay = $True
while($Delay){
    #15 Second delay so it does not run forever
    if($Timer.Elapsed.TotalSeconds -ge 5){Remove-Variable Timer; $Delay = $false}
    if($UDPSocket.Available -gt 0){
        $RecieveBytes = $UDPSocket.Receive($RecieveBuffer, [System.Net.Sockets.SocketFlags]::None)

        if($RecieveBytes -gt 0){
            $Text = "$([System.Text.Encoding]::UTF8.GetString($RecieveBuffer, 0, $RecieveBytes))"
            $Response_RAW += $Text
        }
    }
}

$UDPSocket.Close()

$Response_RAW

这将会输出类似这样的东西。

HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
EXT: 
LOCATION: http://10.0.0.1:1900/scalarwebapi_dd.xml
SERVER: FedoraCore/2 UPnP/1.0 MINT-X/1.8.1
ST: urn:schemas-sony-com:service:ScalarWebAPI:1
USN: uuid:00000000-0005-0010-8000-abcdabcdabcd::urn:schemas-sony-com:service:ScalarWebAPI:1

LOCATION是有趣的部分

或者,如果你能在C#环境下使用,并且感觉很幸运,可以用这个oneliner代替。

//ATT: this needs a project reference to COM library *UPnP 1.0 Type Library (Control Point)*
Console.WriteLine((new UPNPLib.UPnPDeviceFinder().FindByType("urn:schemas-sony-com:service:ScalarWebAPI:1", 0).OfType<UPnPDevice>().FirstOrDefault() as UPNPLib.IUPnPDeviceDocumentAccess)?.GetDocumentURL() ?? "nothing found");

(如果其中任何一个都没有结果,请替换为 "LOCATION") urn:schemas-sony-com:service:ScalarWebAPI:1ssdp:all 并在返回的列表中找到你的设备信息)

2.5 探索您的摄像机 api URL 第二部分。XML (仍然是可选的)

所有这些探测只是给你一个网址,看起来像这样。http:/10.0.0.1:1900scalarwebapi_dd.xml。这不是API的网址! (尚未)

你可以在浏览器中打开它,应该可以看到这样的内容。

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
    <specVersion>
        <major>1</major>
        <minor>0</minor>
    </specVersion>
    <device>
        <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
        <friendlyName>DSC-HX50V</friendlyName>
        <manufacturer>Sony Corporation</manufacturer>
        <manufacturerURL>http://www.sony.com/</manufacturerURL>
        <modelDescription>SonyRemoteCamera</modelDescription>
        <modelName>SonyImagingDevice</modelName>
        <modelURL>http://www.sony.net/</modelURL>
        <serialNumber/>
        <UDN>uuid:00000000-0005-0010-8000-784b8705bcbc</UDN>
        <serviceList>
            <service>
                <serviceType>urn:schemas-sony-com:service:ScalarWebAPI:1</serviceType>
                <serviceId>urn:schemas-sony-com:serviceId:ScalarWebAPI</serviceId>
                <SCPDURL/>
                <controlURL/>
                <eventSubURL/>
            </service>
        </serviceList>
        <av:X_ScalarWebAPI_DeviceInfo xmlns:av="urn:schemas-sony-com:av">
            <av:X_ScalarWebAPI_Version>1.0</av:X_ScalarWebAPI_Version>
            <av:X_ScalarWebAPI_ServiceList>
                <av:X_ScalarWebAPI_Service>
                    <av:X_ScalarWebAPI_ServiceType>camera</av:X_ScalarWebAPI_ServiceType>
                    <av:X_ScalarWebAPI_ActionList_URL>http://10.0.0.1:10000/sony</av:X_ScalarWebAPI_ActionList_URL>
                    <av:X_ScalarWebAPI_AccessType/>
                </av:X_ScalarWebAPI_Service>
            </av:X_ScalarWebAPI_ServiceList>
        </av:X_ScalarWebAPI_DeviceInfo>
    </device>
</root>

API的网址在这里。<av:X_ScalarWebAPI_ActionList_URL>http://10.0.0.1:10000/sony</av:X_ScalarWebAPI_ActionList_URL>

这在索尼SDK开发指南的 "步骤3. 调用API。"的索尼SDK开发指南。

注意!对于DSC-HX50V来说,这个文档是不正确的。摄像机的端点不是 http://10.0.0.1:10000/sony/camera 不过 http://10.0.0.1:10000/camera.另一个我觉得响应的终端,但不能从这里得到任何有用的东西是。http://10.0.0.1:10000/guidehttp://10.0.0.1:10000/sony 似乎只返回空的响应。

3. 查询API

现在,我们终于有了一个API url,我们可以通过调用以下方法来查询你的索尼相机api的功能 getAvailableApiList (对于 /camera 端点)和 getMethodTypes (更详细,对其他端点也适用)。这在 Sony_CameraRemoteAPIbeta_API-Reference_v2.40.pdf。 第251-254页,该书也被列入《联合国宪章》。索尼SDK

举个例子。以我的HX50V为例,我发送了一个HTTP POST请求(使用PostMan)到: http:/10.0.0.1:10000camera。

POST正文。

{
    "version":"1.0",
    "id":1234,
    "method":"getAvailableApiList",
    "params":[]
}
  • 得到了这样的回复。
{
    "id": 1235,
    "result": [
        [
            "getMethodTypes",
            "getAvailableApiList",
            "setShootMode",
            "getShootMode",
            "getSupportedShootMode",
            "getAvailableShootMode",
            "setFlashMode",
            "getFlashMode",
            "getSupportedFlashMode",
            "getAvailableFlashMode",
            "setSelfTimer",
            "getSelfTimer",
            "getSupportedSelfTimer",
            "getAvailableSelfTimer",
            "startLiveview",
            "stopLiveview",
            "actTakePicture",
            "startMovieRec",
            "stopMovieRec",
            "actZoom",
            "getApplicationInfo",
            "getVersions",
            "receiveEvent"
        ]
    ]
}

看了这个列表,原来HX50V的LiveView是固定的,设置为惨不忍睹的640x480 px。我想把这台摄像机变成网络摄像机的尝试就这样结束了。

其他相机确实支持 "Liveview尺寸 "api。这一切都在索尼API参考资料的第11页的一个巨大的表格中--除了HX50V没有被列出。

时间捕捉还是有可能的,但由于某些难以理解的原因,当通过Wifi连接时,USB充电被禁用,所以如果没有一些额外的电池,它将不可能让相机连续几天。

不管怎么说,希望对想搞清楚索尼Apis的人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.