How to stream video from Inskam endoscope to PC via Wi-Fi? - camera

I have Inskam Wi-Fi endoscope.
After launch, it starts Wi-Fi network. To see video stream, you need to connect to network via phone with Inskam application for Android or iOS installed.
But I need to capture a video stream on my PC.
I think that camera turns on the streaming application. My idea is to directly access the streaming resource.
I've tried to access it from my PC via connect to camera Wi-Fi network:
http://192.168.29.102:8080/
http://192.168.29.102:8080/?action=stream
http://192.168.1.1:8080/
http://192.168.1.1:8080/?action=stream
Connection is failed.
How to capture video stream of camera via PC?

Do you want to use your PC to play the stream from your Wi-Fi endoscope, which only provides iOS/Android app to watch the stream?
Maybe there is another solution: Use iOS or Android to play the stream, then use OBS to capture the screen of your mobile phone(please see tutorial for iOS or Android), now you could use OBS to stream to anywhere.
It works like this:
Wi-Fi ---Wifi--> iOS/Android ---USB--> OBS
endoscope (PC)
OBS is running on your PC and you could record the stream.
If you would to broadcast the stream to internet or other mobile phone, then you could use OBS to publish it to a media server(SRS) or live streaming platform, like bellow:
OBS ---RTMP--> SRS/YouTube/Twitch ---> Players
(PC) (PC/Mobile)
It enables multiple users to watch the stream.

Related

Stream live video from Raspberry Pi Camera to Android App

I have multiple Raspberry Pi Devices with the native camera in my home and office (PUBLISHERS). - Publisher(Pi) they are on a local network behind a firewall/router and connected to the internet.
I have an EC2 webserver (BROKER). It is publicly accessible over a public IP Address.
I have an Android App on my phone. It has internet connectivity through a 4G Network. (SUBSCRIBER/CONSUMER/CLIENT)
I am trying to view the live feed of each of the raspberry cameras on my Android app. The problem is more conceptual than technical. I am unable to decide what should be the right approach and most efficient way to achieve this in terms of costs and latency.
Approaches, I have figured out based on my research on this:-
Approach 1:
1. Stream the camera in RTSP / RTMP in the pi device via raspvid/ffmpeg
2. Have a code in the pi device that reads the RTSP stream saves it to AWS S3
3. Have a middleware that transcodes the RTSP stream and saves it in a format accessible to mobile app via S3 url
Approach 2:
1. Stream the camera in RTSP / RTMP in the pi device via raspvid/ffmpeg
2. Have a code in the pi device that reads the RTSP stream pushes it to a remote frame gathering (ImageZMQ) server. EC2 can be used here.
3. Have a middleware that transcodes the frames to an RTSP stream and saves it in a format on S3 that is accessible to the mobile app via pubicly accessible S3 URL
Approach 3:
1. Stream the camera in WebRTC format by launching a web browser.
2. Send the stream to a media server like Kurento. EC2 can be used here.
3. Generate a unique webrtc pubicly accessible url to each stream
4. Access the webrtc video via mobile app
Approach 4:
1. Stream the camera in RTSP / RTMP in the pi device via raspvid/ffmpeg
2. Grab the stream via Amazon Kinesis client installed on the devices.
3. Publish the Kinesis stream to AWS Cloud
4. Have a Lambda store to transcode it and store it in S3
5. Have the mobile app access the video stream via publicly accessible S3 url
Approach 5: - (Fairly complex involving STUN/TURN Servers to bypass NAT)
1. Stream the camera in RTSP / RTMP in the pi device via raspvid/ffmpeg
2. Grab the stream and send it a to mediaserver like gstreamer. EC2 can be used here.
3. Use a live555 proxy or ngnix RTMP module. EC2 can be used here.
4. Generate a unique publicly accessible link for each device but running on the same port
5. Have the mobile app access the video stream via the device link
I am open to any video format as long as I am not using any third-party commercial solution like wowza, antmedia, dataplicity, aws kinesis. The most important constraint I have is all my devices are headless and I can only access them via ssh. As such I excluded any such option that involves manual setup or interacting with desktop interface of the PUBLISHERS(Pis). I can create scripts to automate all of this.
End goal is I wish to have public urls for each of Raspberry PI cams but all running on the same socket/port number like this:-
rtsp://cam1-frontdesk.mycompany.com:554/
rtsp://cam2-backoffice.mycompany.com:554/
rtsp://cam3-home.mycompany.com:554/
rtsp://cam4-club.mycompany.com:554/
Basically, with raspvid/ffmpeg you have a simple IP camera. So any architecture applicable in this case would work for you. As example, take a look at this architecture where you install Nimble Streamer on your AWS machine, then process that stream there and get URL for playback (HLS or any other suitable protocol). That URL can be played in any hardware/software player upon your choice and be inserted into any web player as well.
So it's your Approach 3 which HLS instead of WerRTC.
Which solution is appropriate depends mostly on whether you're viewing the video in a native application (e.g. VLC) and what you mean by "live" -- typically, "live streaming" uses HLS, which typically adds at least 5 and often closer to 30 seconds of latency as it downloads and plays sequences of short video files.
If you can tolerate the latency, HLS is the simplest solution.
If you want something real-time (< 0.300 seconds of latency) and are viewing the video via a native app, RTSP is the simplest solution.
If you would like something real-time and would like to view it in the web browser, Broadway.js, Media Source Extensions (MSE), and WebRTC are the three available solutions. Broadway.js is limited to H.264 Baseline, and only performs decently with GPU-accelerated canvas support -- not supported on all browsers. MSE is likewise not supported on all browsers. WebRTC has the best support, but is also the most complex of the three.
For real-time video from a Raspberry Pi that works in any browser, take a look at Alohacam.io (full disclosure: I am the author).

Sony Camera Remote API SDK for Bluetooth

I am wondering if it's possible to use the Sony Sony Camera Remote API beta SDK / AddOn SDK / Smart Extension API to control action cameras functionality by my application side via BlueTooth (no Wi-Fi).
My goal is to write an extension which will mainly:
Mandatory: start and stop video saving on camera internal memory
Optional: , insert allarms, set video acquisition parameters, ecc.
Does anyone have:
the information if this SDK is the right choice to control this type of Sony device
if it's possible to reach my described goal with it or if there are any impossibilities
other related information or special requirements for controlling Sony cameras via bluetooth.
Thanks
Unfortunately you will only be able to use Wifi to control cameras with the camera remote API.

Connecting to Multiple Cameras via Sony Remote Camera API

Using Sony Remote Camera SDK 2.1.2
I am not using any mobile devices to talk to my Sony cameras
I am using a Ubuntu, C++ and a router to access my Sony cameras
My Sony cameras WORK for one API call, they provide a response to the Sony Camera Remote API call "startLiveview" but that is the only Sony Camera Remote API call that the Sony cameras will respond to, I have tried "startLivewviewWithSize", "getSupportedLiveviewSize", "getLivewviewSize", and "getAvailableAppList", "getApplicationInfo", none of these API calls get a response from either of my Sony Cameras, in general, there is one exception see below
I have tried all these calls with only one Sony Camera on.
The exception: when I will actually get responses from the Sony Cameras. If I call "getAvailableAppList", this will cause something to happen to the Sony Camera, and I will start to get responses from it but only when the camera is in Wifi Live Preview mode
Now the Scenario:
I have two Sony HDR-AZ1 cameras, I have them both set to "Perform Live Streaming":
Currently, I am able to capture the Livepreview stream, recording it, using VLC PLayer and a Netgear Router where I assign static IP addresses to the cameras:
I have assigned the Sony Cameras in my LAN settings in my Netgear Router:
#define SONY_CAMERA_1 #"http://192.168.178.13:8080/sony/camera"
#define SONY_CAMERA_2 #"http://192.168.178.14:8080/sony/camera"
So I can capture the Liveview stream from two cameras because of the static IP addresses I have assigned with my router.
The Livepreview stream is always streaming, no API calls are sent to the camera, the static assigned IP addresses allow me to capture the stream using VLC Player to record the stream:
Now I am trying to figure out if I can use the Sony Remote Camera API with my static IP addresses to talk to multiple cameras. I have read online that it is possible and that it is not possible, yet I haven't found a clear statement on the fact one way or the other.
This Stackoverflow article would imply, via the last sentence of Sony's #Marlin-SONY's answer that it is possible, using the Sony Remote Camera API: Is there a way to send multiple wifi camera a signal to take a picture at the same time?
But Simon Wood's answer and code, along with other articles convey that multiple connection via Sony Remote Camera API is still a bit of an elusive unsolved issue.
With my static IP addresses, assigned at the router, I expect that I can do the following call:
http://192.168.178.13:8080/sony/camera
strCmd = "{"
"\"method\" : \"getApplicationInfo\","
"\"params\" : [],"
"\"id\" : 1,"
"\"version\" : \"1.0\""
"}".toJSON;
and get a response, but I never get a response, not matter what Wifi mode the camera is set to.
I assume I will need to switch the WiFi mode on the Sony HDR-AZ1 cameras to either just "WiFi" or "Wifi Multi Connection" instead of the "WiFi Perform Live Streaming" I currently have them set to be but even that is not clearly documented anywhere that I can find.
Can I connect to multiple cameras via the Sony Remote Camera API, I assume the answer is yes but my cameras are not acting as Wireless Access Points, do they still receive all documented Sony Camera Remote API calls when the the cameras are in some flavor of Wifi with static IP addresses assigned to them via my router?
What WiFi mode do my cameras need to be in to work with the Sony Remote Camera API? 1)Wifi, 2 Wifi Multi Connection (This seems to be only for the Sony Remote Control product) or 3) Wifi Livepreview?
Do I need to use my router to assign static IP addresses or can I use SSDP to find the cameras?
Have you tried looking at the CameraRemoteSampleApp sample code inside the Camera Remote SDK?
https://developer.sony.com/downloads/all/sony-camera-remote-api-beta-sdk/
There are examples of how to get the IP address for the cameras for both Android and iOS.
Edit: To answer your questions above the Sony Camera Remote API does not support connecting to multiple cameras from a single phone or via a router. It only supports the API over a direct WiFi connection 1:1 between a phone and a camera.
Not a direct answer for you, but if you'd like to play I had attempted detecting multiple cameras (but don't have appropriate hardware to test) in this project:
https://github.com/Bloodevil/sony_camera_api
The script 'src/examples/scan_for_cameras.py' will attempt to find all cameras bonded to local network/machine.
I'd be real interested in finding out whether it actually works ;-)
Cheers,
Simon.

Camera Remote API : Camera + iPad + PC?

I'm currently studying the Development Guide given with the Sony Camera Remote API beta SDK, and what I've understood so far, is that in order to send and receive messages between a camera and a mobile device, the smartphone or tablet should be connected through Wifi to the camera, which acts as an access point.
Actually, what I'd like to do after downloading a picture on the mobile device from the camera, is to pass it to a PC so that I will be able to print it and use it for other purposes. This process should be completely transparent and automatic for the final user.
Thus, my problem is that I need the mobile device to be connected, through Wifi, to both camera and PC.
The solutions I have in mind are :
Make the mobile device, and the PC, connect to the camera access point, so that they can be located on the same network.
Is this possible? I mean, can the Sony camera handle more than one client when acting as an access point? If yes, can I have a fixed IP for mobile device and PC so that I can easily make them exchange data?
Use a simple wifi router and make the camera, mobile device, and PC connect to this router.
Without acting as an access point (i.e. simple network client), can the camera be used with the remote control function?
If you guys see any other options, I'd be glad to read them !
Thanks,
Bertrand
Unfortunately, neither of your solutions would be supported. Only one device can be connected to the camera AP at a time, and the camera itself has to act as the access point (certain models support connecting to an access point from the camera but the Camera Remote API is not supported in this case).
If you don't need the mobile device to have access to the pictures, your best bet may be to directly connect the PC to the Camera and transfer the images using the API. The API is REST based so can be used on any platform.

Is it possible to connect both the remote and my android app to my HDR-AZ1, at the same time?

I have a Sony HDR-AZ1 with the RM-LVR2V remote.
I'm currently integrating the Remote API into an Android app that we are developing. The app will download video and photos from the camera, and transfer them to our web service.
What I've discovered is that it appear as if only one device can be connected to the camera at any single time - either my smartphone or my RM-LVR2V remote. Not both at once, which I would need. I'm not sure if this is the case, but it appear as if I have my smartphone connected to the camera, then I cannot connect my remote, and vice versa. Is this correct?
Is there some way to connect both my RM-LVR2V and my smartphone to the camera, at the same time?
Unfortunately connecting both at once is not possible. The Camera only supports one WiFi connection at a time. You may want to look into using something like a SmartWatch 2 or 3 to connect to the phone and then the phone to the camera to achieve what you are trying to do.