Sony A7: How to download original RAW (ARW) files through HTTP - camera

The PlayMemories iOS App uses an HTTP API on the A7 that converts to JPG when you transfer images.
Here is an example of the API endpoint it uses to download a photo from the camera to a smartphone (10.0.0.1 is the A7, the phone is connected to the A7's access point using the 'Send to Smartphone' feature):
http://10.0.0.1:60151/LRG_DSC02094.ARW?%2104%5f02%5f0591035880%5f000001%5f000001%5f000000%21http%2dget%3a%2a%3aimage%2fjpeg%3aDLNA%2eORG%5fPN%3dJPEG%5fLRG%3bDLNA%2eORG%5fCI%3d1%21%21%21%21%21
When I decode the URL encoding it looks like this:
http://10.0.0.1:60151/LRG_DSC02094.ARW?!04_02_0591035880_000001_000001_000000!http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_CI=1!!!!!
I am curious if there is a way to get the original RAW (.ARW) images through the server running on 10.0.0.1:60151. If it was possible I would imagine it would involve changing "image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_CI=1" to a different mimetype, but I am not sure if it is possible.
EDIT Further investigation revealed that when you run the 'Smart Remote Control' app it provides a second HTTP API, but this one only supports transferring full resolution images on A7II and above, so A7 and A7R are not supported for image transfer at all, even though the service running on 60151 above lets you transfer full resolution JPGs, just not ARW.

Unfortunately as you noted above, the A7 camera does not support image transferring via the Camera Remote API.

Related

How to stream an HTTP POST request's body in the browser

The big picture is that I want to live upload recorded audio from the browser directly to google drive.
This is a pet project so I am happy to play with experimental web technologies.
I currently have the browser fetching a feed from the microphone using MediaDevices.getUserMedia() and encoding it to mp3 in a WebWorker. The encoder returns an rxjs.Observable<Int16Array> that will produce chunks of the encoded file on subscribe.
I would like to use a resumable upload to upload the file, preferably in the "single request" style. The challenge is in uploading the file as it is produced by the encoder.
I appreciate that I could probably achieve a similar result by using their "multiple chunks" style and collecting the results of the encoder into Blobs and sending them on an interval. My problem with this is that the more "live" the upload is (smaller chunks) the more POST requests I will be making.
XMLHttpRequest.send() does specify that I can provide a ReadableStream as the body. BUT it appears that this experimental tech does not yet support byte streams

Finding the file size of an image file in the Sony Camera Remote API

I'm writing a fairly involved application for working with Sony cameras.
I can list the contents of the camera and copy image files no problem at all, but I can't seem to figure out the size of the files before I start to download them.
I'm receiving the file list using the standard getContentList API, and finding the files using the originals array in the response. That response seems to have no file size information in it.
Is this possible? Knowing the file size before downloading is important for a good user experience, and all the other camera APIs support it.
I do get the size when I start to download in the HTTP Content-Length header, but performing HEAD requests to hundreds of URLs in a row seems very inefficient!
Unfortunately the API does not support getting the file size.

How can I set shutter speed and iso settings in sony DSC qx10 lens style camera?

I have created a sample application and I am getting list of available apis from camera which include only getSupportedIsoSpeedRateand not setIsoSpeedRate,getAvailableIsoSpeedRate,getIsoSpeedRate. And when I send request for setIsoSpeedRate I am getting an error, Can you tell me how will I access setIsoSpeedRate with as the documentation provided in Sony developer's website. I am using DSC-QX10 Lens style camera. And I am getting the below mentioned error when I am trying to send Json request for any method which is not available in device's available API list .
My Request Json is
{"id":11,"method":"setIsoSpeedRate","version":"1.0","params":["800"]}
and I am getting this response from server device
{"error":[1,""],"id":1}
If the API is not listed in the return from the available API list then it is not supported on that device. So what you are seeing is expected.

Grab all frames from IP camera

I have a Sony IPELA snc-ch180 camera. It's a network camera.
Is there a way I can save all frames from the live images onto my hard drive?
Any idea what software can do this.
Yes you can. You need to check the camera reference and find out supported protocols, some of which are likely to be well known ones (alternatively, you reverse engineer them using network sniffer). Then you implement a client that connects to the camera and receives video stream. Having it received you parse it, decode it into frames, decompress/recompress if necessary and save to hard drive.

Transferring images from one iPad to another

I have an app which displays an image when I say some word, and the word is from my dictionary which I had exclusively created for the app.
Now I want that image displayed on my friends iPad simultaneously, when it shows on my iPad. Is there any way for that?
Thanks and regards,
Christy
If both iPads are in the same local network, you can use cocoahttpserver to run a HTTP-Server on every device and announce the services via Bonjour. Once a new picture is available, that devices connects the server on the other devices and informs it, that new data is available. The second device than will connect the server running on the first device and download the picture.
the advantage of this approach: the protocols you are using are well-know and a lot of additionally tools are available.
But you can also have a similar, more downlevel appoach, where you design your own network protocol. In that case I'd use Asyncsocket
Use synchronize image with both ipad using internet or use APN to notify that image is ready.