I'm trying to stream video from endoscope camera YPC99
on linux PC using the WiFi connection. From what I have found so far the camera is using IP 192.168.1.1. It supports RTSP
protocol on port 7070 (the only one opened port).
The DESCRIBE
reports that the stream should be JPEG video (RTP/AVP 26
)
DESCRIBE rtsp://192.168.1.1:7070/webcam RTSP/1.0
CSec: 2
RTSP/1.0 200 OK
Content-Base: rtsp://192.168.1.1:7070/webcam/
Content-Type: application/sdp
Content-Length: 122
v=0
o=- 1 1 IN IP4 127.0.0.1
s=Test
a=type:broadcast
t=0 0
c=IN IP4 0.0.0.0
m=video 0 RTP/AVP 26
a=control:track0
VLC
is showing black screen. ffmpeg
also can't detect the correct codec to be used:
$ ffmpeg -i rtsp://192.168.1.1:7070/webcam -vcodec copy /tmp/abc.mp4
ffmpeg version n4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.3.0 (Arch Linux 9.3.0-1)
configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[mjpeg @ 0x55ef344d0900] dqt: 0 quant value
Last message repeated 58 times
[rtsp @ 0x55ef344ccfc0] decoding for stream 0 failed
[rtsp @ 0x55ef344ccfc0] Could not find codec parameters for stream 0 (Video: mjpeg, none(bt470bg/unknown/unknown)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, rtsp, from 'rtsp://192.168.1.1:7070/webcam':
Metadata:
title : Test
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, none(bt470bg/unknown/unknown), 90k tbr, 90k tbn, 90k tbc
[mp4 @ 0x55ef344fcc40] dimensions not set
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Last message repeated 1 times
I have a wireshark
dump of some seconds of streaming (while was trying to play it with VLC). From what I have read each frame should start with FFD8
and should end with FFD9
. There is no single package containing FFD8
but there are many containing FFD9
, so I can't find out the beginning of the frame to see if some headers there could help me.
There is andorid
and iPhone
apps to watch the stream from the camera. The app is called YCamera
. I have downloaded the andorid app (https://apkpure.com/ycamera/cn.com.buildwin.YCamera) and have de-compile it. In the resources directory there are the following libs:
- libijkffmpeg.so
- libijkplayer.so
- libijksdl.so
It seems that libijkffmpeg.so
is the one processing the stream (the string bt470bg
is found only inside it). According my research (for this one I'm not sure if I'm looking where I should) it's part of ijkplayer
player that should be based on ffmpeg
but strangely ffmpeg
can't recognize the stream.
I know that my question is too open but any suggestions how can I keep progressing?
The final goal is to be able to make this stream public. For this purpose it will be best if ffmpeg
or vlc
can recognize the stream.