SONY camera API/SDK

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 25-09 10:28

Atmoz

Techno!!

Topicstarter
Graag zou ik een (DOS-prompt / commandline) tooltje maken waarmee ik het starten/stoppen van video-recorden kan bedienen op mijn SONY A7RV camera. De camera is via Wifi verbonden met mijn netwerk. In ditzelfde netwerk zit mijn (Windows) computer waarop ik dit tooltje zou willen laten draaien.

SONY heeft er een API/SDK voor gemaakt, maar dat valt (voor mij althans) helaas nog niet mee ;( Dat is dan nog heel zacht uitgedrukt, want ik ben er zelf al zo'n 30 uur (!!) mee bezig en verder hebben er nog 2 goede programmeurs naar gekeken, helaas ook zonder resultaat...

Als ik het goed begrijp kan ik op 2 manieren connecten met de camera.

1. via "Pairing" (dan moet de software een soort request sturen naar de camera waar je vervolgens moet bevestigen)
2. via SSH

Als ik in een browser naar http://192.168.1.88:64321/DigitalImagingDesc.xml ga, dan komt deze data naar voren:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>X_DigitalImagingDeviceInfo</name>
<dataType>string</dataType>
</stateVariable>
</serviceStateTable>
<X_DigitalImagingDeviceInfo>
<X_DeviceInfo>
<X_ModelName>ILCE-7SM3</X_ModelName>
<X_FirmwareVersion>3.02</X_FirmwareVersion>
<X_ServerType>Control with Smartphone</X_ServerType>
<X_ServerVersion>3.01</X_ServerVersion>
<X_MacAddress>A0:CD:F3:7D:21:1C</X_MacAddress>
<X_FunctionLaunchFrom name="BluetoothRemotePowerControl"/>
<X_SerialVersion>03772575</X_SerialVersion>
</X_DeviceInfo>
<X_DeviceCapability>
<X_Bluetooth_4.0>
<X_Function name="LocationInfoFromSmartPhone" version="1.1"/>
<X_Function name="RemotePowerControl" version="1.0"/>
</X_Bluetooth_4.0>
</X_DeviceCapability>
<X_DeviceRestriction>
<X_PostViewOnContinuousShooting/>
</X_DeviceRestriction>
<X_PTP_Information>
<X_PTP_Versions>3.00</X_PTP_Versions>
<X_PTP_PairingNecessity>Unnecessary</X_PTP_PairingNecessity>
<X_PTP_MediaServerSupport>Enable</X_PTP_MediaServerSupport>
<X_PTP_RemoteControlSupport>Enable</X_PTP_RemoteControlSupport>
</X_PTP_Information>
<X_ConnectionInfo>
<X_SSH_Support>Enable</X_SSH_Support>
</X_ConnectionInfo>
</X_DigitalImagingDeviceInfo>
</scpd>


Dat laat mij denken dat ik via SSH zou moeten kunnen inloggen. Maar wat ik ook probeer -zowel in mijn code als in de camera(settings)-, niets lijkt te werken.

Ik programmeer zelf altijd in VB.NET, maar als het moet zou het ook in C# kunnen. Het grote probleem is dat de SDK in C++ is gemaakt. Daar snap ik zelf letterlijk bijna niets van, dus dan gaat het natuurlijk een stuk moeilijker worden. Ik ben daarom opzoek naar een slimme manier waarop ik zelf niet alles hoef te snappen van C++, maar toch de API kan gebruiken. Is dat met een soort "wrapper" of "linker" ofzo? En hoe zou ik dit het beste kunnen aanpakken.

Er zit een voorbeeld-tooltje bij de API, maar dat is zover ik bebgrijp (en getest heb) alleen als je met USB wilt verbinden. Dat lukt ook, maar daar heb ik helaas niets aan omdat ik het via Wifi wil.

Wat ik verder ook begrijp uit het onderstaande filmpje, is dat ik zal moeten praten met de SONY SDK, en niet rechtstreeks met de camera zelf:

Afbeeldingslocatie: https://tweakers.net/i/W6mhZNG_kl2Xz1ufGBWRcK4ARzM=/800x/filters:strip_icc():strip_exif()/f/image/3vMehA0MOMDjOK7fTI5ffl3D.jpg?f=fotoalbum_large

Dat maakt het nóg verwarrender voor me, want wat zou ik dan met SSH moeten? Of is dat gewoon om aan te geven dat ik wil dat de SDK met de camera via SSH spreekt? Anyway; dit maakt het voor mij gewoon nóg moelijker, want ik ben eigenlijk gewend om "gewoon rechtstreeks" tegen een API aan te spreken...



Ik ben erg benieuwd naar hoe jullie dit zouden aanpakken en waar ik het nog zou moeten zoeken.

Alvast heel erg bedankt voor het meedenken _/-\o_

[edit]

Er zijn/waren meerdere API's, ik heb het over de nieuwe die sinds 2020 beschikbaar is. Alle code/voorbeelden/GitHubs/topics die gaan over vóór 2020 zullen dus NIET werken en dus ook niet van belang zijn.

Alle reacties


Acties:
  • +1 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Wat lukt er precies niet? Heb je relevante stukken code? Heb je SSH al eens geprobeerd met de shell/terminal? Ondanks de vele tijd die je er in hebt zitten mis ik concrete zaken. De documentatie kan ik niet zomaar downloaden ook.

Er is ook een Remote Command optie, ook voor jouw camera, die al geprobeerd? Ik kom bijv deze python library tegen die daar gebruik van maakt https://github.com/petabite/libsonyapi

[ Voor 37% gewijzigd door Cartman! op 12-01-2025 09:46 ]


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 25-09 10:28

Atmoz

Techno!!

Topicstarter
Tot nu toe eigenlijk (bijna) niets...
Het enigste wat wél lukt is het ophalen van die XML (zie TS) als ik naar die bepaalde URL ga op de camera.
En als ik vervolgens in het menu v/d camera SSH uitzet, dan is dat ook zichtbaar in die XML. Dus daarmee kan ik zegmaar "bewijzen" dat ik via SSH zou moeten kunnen connecten. Ik krijg dan namelijk ook een username + wachtwoord. Dus dat lijkt allemaal goed zou je zeggen.
Heb je relevante stukken code?
Nou, ik heb werkelijk pagina's en pagina's vol zitten praten met ChatGPT, en in eerste instantie lijk daar ook wel handige code uit te komen, maar later bleek dat hij me gewoon "rondjes" liet draaien om totaal onzinnge dingen. Dus ik heb zéér veel code (geprobeerd), maar ik denk niet dat daar ook maar iets van nuttig is voor hier in het topic.

De code uit de voorbeelden die SONY bij de SDK heeft kan ik natuurlijk wel posten hier, maar dat is dus in C++ en daar kan ik helaas zelf echt niets mee.
Heb je SSH al eens geprobeerd met de shell/terminal?
Jazeker, uren en uren :P (ik wil dit echt héél graag werkend hebben, dus er zitten de laatste weken dagen bij dat ik gewoon om 3, 4 of 5u ben opgestaan om dit werkend te krijgen!)

Ik (maar ook die andere 2 programmeurs) heb geprobeerd om met SSH connectie te krijgen, maar dat lijkt de camera te wijgeren. Er wordt wel om het wachtwoord gevraagd, maar daarna komt meteen:

code:
1
2
channel 0: open failed: connect failed: open failed
Connection to 192.168.1.66 closed.


Maar als ik kijk naar dat filmpje, dan denk ik dat ik ook helemaal niet rechtstreeks moet spreken met de camera (ook niet met SSH), want er moet toch een SDK tussen zitten? Of begrijp ik dat verkeerd?
Ondanks de vele tijd die je er in hebt zitten mis ik concrete zaken. De documentatie kan ik niet zomaar downloaden ook.
Mag het hier van Tweakers de PDF-bestanden linken? Ze zijn in principe toch gewoon open beschikbaar, je moet normaal alleen je gegevens invoeren.
Er is ook een Remote Command optie, ook voor jouw camera, die al geprobeerd?
Ja, dan krijg ik dit scherm:
Afbeeldingslocatie: https://tweakers.net/i/hRfBZJ9XpywULGOs76s5x2Gfn-U=/800x/filters:strip_icc():strip_exif()/f/image/GFoxjhKxdK2XJFFH4NfgUkNu.jpg?f=fotoalbum_large

Maar daar is niets te vinden over "Wifi, IP-adressen, pairen, SSH, etc..." (ook in de sourcecode niet!) dus dat laat me denken dat dit alleen voor USB is. Wel gek dat erbij staat dat het ook voor Wifi is, maar wat ik ook probeer/zoek, daarmee krijg ik ook geen connectie.
Ik kom bijv deze python library tegen die daar gebruik van maakt https://github.com/petabite/libsonyapi
Dat is een library die nog met de oude API werkt. Deze API is pas vanaf 2020 beschikbaar. Misschien had ik dat in de TS erbij moeten zetten, mijn excuses! Dat zal ik dan zometeen alsnog even doen :)

Acties:
  • +1 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
En wat gebeurt er dan als je op "Connect" drukt?

Dat die API oud is doet er toch niet toe als deze wel werkt?

[ Voor 40% gewijzigd door Cartman! op 12-01-2025 10:43 ]


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 25-09 10:28

Atmoz

Techno!!

Topicstarter
Cartman! schreef op zondag 12 januari 2025 @ 10:38:
En wat gebeurt er dan als je op "Connect" drukt?

Dat die API oud is doet er toch niet toe als deze wel werkt?
Dan komt deze foutmelding:

Afbeeldingslocatie: https://tweakers.net/i/Rq0ljQq0sCYGQgP53UrNDMAEXak=/fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():strip_exif()/f/image/7XD52Nu98gNYzNIfGkncbBSs.jpg?f=user_large

En dat komt weer voort uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
BOOL CaptureDlg::OnInitializeButtonClicked(HWND hDlg) {
  if (!ptp.prepareConnection()) {
    MessageBox(NULL, __T("Camera Not Detected"), __T("Information"), MB_OK);
    return FALSE;
  }

  HRESULT hr = ptp.SDIOConnect(1, SDIO_CONNECT_ID, SDIO_CONNECT_ID);

  if (hr != S_OK) {
    MessageBox(NULL, __T("Error: SDIOConnect(1, 0x00000000, 0x00000000)"),
               __T("Error"), MB_OK);
    return FALSE;
  }
  hr = ptp.SDIOConnect(2, SDIO_CONNECT_ID, SDIO_CONNECT_ID);
  if (hr != S_OK) {
    MessageBox(NULL, __T("Error: SDIOConnect(2, 0x00000000, 0x00000000)"),
               __T("Error"), MB_OK);
    return FALSE;
  }
  hr = ptp.SDIOGetExtDeviceInfo(SDI_Extension_Version);
  if (hr != S_OK) {
    MessageBox(NULL, __T("Error: SDIOGetExtDeviceInfo(SDI_Extension_Version)"),
               __T("Error"), MB_OK);
    return FALSE;
  }
  hr = ptp.SDIOConnect(3, SDIO_CONNECT_ID, SDIO_CONNECT_ID);
  if (hr != S_OK) {
    MessageBox(NULL, __T("Error: SDIOConnect(3, 0x00000000, 0x00000000)"),
               __T("Error"), MB_OK);
    return FALSE;
  }
  hr = S_OK;
  CameraConnected = TRUE;
  Sleep(200);
  UINT8 HOSTPC = 0x01;
  hr = ptp.SDIOSetExtDevicePropValue(DPC_POSITION_KEY, HOSTPC, 0x01);
  if (hr != S_OK) {
    MessageBox(NULL, __T("Error: HOSTPC KEY"), __T("Error"), MB_OK);
    return FALSE;
  }
  Sleep(200);
  return TRUE;
}



[edit]
Cartman! schreef op zondag 12 januari 2025 @ 10:38:
Dat die API oud is doet er toch niet toe als deze wel werkt?
Klopt, dat zou totaal niet uitmaken. Maar het probleem is dat mijn camera dat niet (meer?) ondersteunt.

[ Voor 7% gewijzigd door Atmoz op 12-01-2025 10:46 ]


Acties:
  • +1 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Je camera staat wel bij de ondersteunde apparaten. Anders contact opnemen met Sony.

Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 25-09 10:28

Atmoz

Techno!!

Topicstarter
Cartman! schreef op zondag 12 januari 2025 @ 10:47:
Je camera staat wel bij de ondersteunde apparaten.
Dat is oude informatie.
Alle verwijzingen (vanuit dat soort projecten/topics) naar die oude API lopen dood bij SONY.
Dat er bij een project (losstaand van SONY) onterecht nog bij staat dat het met mijn camera werkt, dat maakt het alleen maar verwarend...
Anders contact opnemen met Sony.
Denk je dat die me zouden helpen met dit probleem dan? [edit] Ik denk persoonlijk dat ze me gewoon naar de API documtatie verwijzen. Maarja, daar zit nu net het probleem O-)


Of bedoel je dit meer om te checken of er iets "niet goed zit" in mijn camera? (de firmware heb ik geupdate naar de nieuwste). Verder heb ik ook nog een SONY A7Siii en daarmee werkt het ook niet. Precies dezelde "problemen" met niet kunnen connecten via Wifi, wel met USB.

[ Voor 7% gewijzigd door Atmoz op 12-01-2025 10:58 ]


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 25-09 10:28

Atmoz

Techno!!

Topicstarter
Ok, ik ben ineens een héél stuk verder 8) 8) 8)

Zo ver als dit ben ik de afgelopen weken nog niet geweest, want ineens kan ik gewoon connecten met het voorbeeld-tooltje "RemoteCli" _/-\o_

Het lukt zelfs op beide manieren: met "pairing" én met SSH. Met die laatste gaat erna echter wel nog iets mis:

code:
1
[CAT: Connect   ] [DETAILS: SSH User authentication failed]


Maar met "pairing" (ik moet dan iets goedkeuren op de camera) werkt het wel gewoon. Met SONY's tool dan he. Nu moet ik nog "even iets uitvogelen" zodat het ook met een eigen tooltje werkt O-)

Als ik echter het voorbeeld-project inlaad, dan komt er bij het compileren meteen een foutmelding:

Afbeeldingslocatie: https://tweakers.net/i/3XI5khgnhc3GMBQzfXuTxt7LRvI=/800x/filters:strip_icc():strip_exif()/f/image/FHtqoJFqL5OQIhlTOFAeH5bt.jpg?f=fotoalbum_large

Wel maar één, dus als die is opgelost, dan zou ik alweer wat verder zijn :)

Wie heeft hier genoeg verstand van om naar een oplossing te kunnen werken?

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Atmoz schreef op zondag 12 januari 2025 @ 11:59:
Ok, ik ben ineens een héél stuk verder 8) 8) 8)
En wat heb je nou veranderd dan?
Atmoz schreef op zondag 12 januari 2025 @ 11:59:
Het lukt zelfs op beide manieren: met "pairing" én met SSH. Met die laatste gaat erna echter wel nog iets mis:

code:
1
[CAT: Connect   ] [DETAILS: SSH User authentication failed]
Je hebt wel een (bekende, werkende) user/pass combinatie? Dat weet je zeker?
Atmoz schreef op zondag 12 januari 2025 @ 11:59:
Als ik echter het voorbeeld-project inlaad, dan komt er bij het compileren meteen een foutmelding:
Als je die nou effe als tekst ipv afbeelding in je reactie zet dan kunnen zoekmachines (Tweakers, google) er ook nog iets mee in de toekomst en daarbij hoeven wij dan niet je foutmelding over te gaan typen om (mee) te kunnen googlen.

[ Voor 28% gewijzigd door RobIII op 12-01-2025 12:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 25-09 10:28

Atmoz

Techno!!

Topicstarter
RobIII schreef op zondag 12 januari 2025 @ 12:03:
En wat heb je nou veranderd dan?
Ik heb nog eens dit commando uitgevoerd:

code:
1
ssh -c aes128-ctr -N -L 15740:localhost:15740 Lsr4XX@192.168.1.66


En daarmee wordt er volgens mij een SSH tunnel opgezet tussen PC en camera.
In plaats van dan zélf met Telnet ofzo de camera in proberen te gaan, heb ik RemoteCli opgestart. Toen vond hij de camera ineens wél.

Vervolgens heb ik SSH in de camera uitgezet en heb ik de camera met USB aan de PC gehangen. Daarmee werkte het eerst ook al, maar omdat ik dit schijnbaar gedaan had (of die stap met SSH die ik hiervoor deed, ik weet het niet welke v/d 2 geholpen heeft), werkt het nu ook ineens met "pairing". Want ineens verscheen op de camera een melding met de vraag of de PC mocht connecten.

Man man man, dit heeft me echt ultra veel tijd gekost 8)7 Máár de aanhouder wint zeg ik maar altijd :+
Je hebt wel een (bekende, werkende) user/pass combinatie? Dat weet je zeker?
Yes! 100% zeker. Ik heb 't hier in een kladblokje naast me staan, en bij het uitvoeren van dat SSH commando in de DOS-prompt heb ik dat daaruit gekopieerd om makkelijk te kunnen pasten, en precies datzelfde wachtwoord wordt er ook gevraagd in RemoteCli (op dat punt waar het dus fout gaat erna). Dus dat is wel nog even vreemd waarom dat precies niet goed gaat...


[edit]
Als je die nou effe als tekst ipv afbeelding in je reactie zet dan kunnen zoekmachines (Tweakers, google) er ook nog iets mee in de toekomst en daarbij hoeven wij dan niet je foutmelding over te gaan typen om (mee) te kunnen googlen.
Goed idee! Bedankt.

Bij deze:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Severity    Code    Description Project File    Line    Suppression State   Details
Error   MSB3073 The command "setlocal
"C:\Program Files\CMake\bin\cmake.exe" -E copy_directory C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/crsdk C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/Debug
if %errorlevel% neq 0 goto :cmEnd
"C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/opencv/Windows/x86_64/Debug/bin/opencv_core480d.dll" C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/Debug
if %errorlevel% neq 0 goto :cmEnd
"C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/opencv/Windows/x86_64/Debug/bin/opencv_highgui480d.dll" C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/Debug
if %errorlevel% neq 0 goto :cmEnd
"C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/opencv/Windows/x86_64/Debug/bin/opencv_imgcodecs480d.dll" C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/Debug
if %errorlevel% neq 0 goto :cmEnd
"C:\Program Files\CMake\bin\cmake.exe" -E copy_if_different "C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/opencv/Windows/x86_64/Debug/bin/opencv_imgproc480d.dll" C:/Users/vanlu/Downloads/CrSDK_v1.13.00_20241016a_Win64/external/Debug
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
:VCEnd" exited with code 1. RemoteCli   C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets   156

[ Voor 42% gewijzigd door Atmoz op 12-01-2025 12:13 ]

Pagina: 1