Python: IP камеры
Модератор: Olej
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Python: IP камеры
Про программы и протоколы работы с IP-камерами видеонаблюдения есть отдельная огромная тема: IP камеры видеонаблюдения.
А здесь только о том, как к этим протоколам (ONVIF & RTSP) подобраться из программного кода на Python.
А здесь только о том, как к этим протоколам (ONVIF & RTSP) подобраться из программного кода на Python.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: IP камеры
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera$ python3 -m pip search onvif
onvif (0.2.0) - Python Client for ONVIF Camera
onvif-zeep (0.2.12) - Python Client for ONVIF Camera
onvif-py3 (0.1.3) - Python Client for ONVIF Camera
onvif-zeep-async (0.2.0) - Async Python Client for ONVIF Camera
camera-discovery (1.0.11) - A package to discover all onvif cameras on your network
sensecam-discovery (2.0.2) - A package to discover all onvif cameras on your network
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera/Partizan_IP$ python3 -m pip search rtsp
rtsp (1.1.6) - RTSP client
Gstreamer-Timelapse-RTSP-Server (0.0.1.post1) - Utility for serving a timelapse over RTSP
rtsp-curl (0.6) - Convert rtsp.c to rtsp_curl.py
live555 (1.0) - Basic wrapper around live555 to load RTSP video streams
pynvr (0.1.12) - Network Video Recorder for recording h264 rtsp IP cameras
hikvision_client (0.5) - A graphical client software for Hikvision (and other RTSP-enabled) IP cameras
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: IP камеры
ONVIF:
Т.е. этот более-менее описанный пакет не годег под Python 3;
Можно использовать с Python 2
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera$ sudo pip3 install onvif
[sudo] пароль для olej:
Collecting onvif
Downloading https://files.pythonhosted.org/packages/fc/69/70c3cec902cac1dea2cfa40d1b2d959645daf383187f0a1061ec1fb60dec/onvif-0.2.0.tar.gz (163kB)
|████████████████████████████████| 163kB 760kB/s
Collecting suds-passworddigest (from onvif)
Downloading https://files.pythonhosted.org/packages/c0/4b/3a7bfb60ec93467c8bd0cd23262a871e50a093171d7e7caf2a39aebe7cd6/suds_passworddigest-0.1.2.zip
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-rd6rvg21/suds-passworddigest/setup.py'"'"'; __file__='"'"'/tmp/pip-install-rd6rvg21/suds-passworddigest/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
cwd: /tmp/pip-install-rd6rvg21/suds-passworddigest/
Complete output (5 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-rd6rvg21/suds-passworddigest/setup.py", line 18, in <module>
long_description=file(
NameError: name 'file' is not defined
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
WARNING: You are using pip version 19.2.2, however version 19.2.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera$ sudo pip2 install onvif
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Collecting onvif
Using cached https://files.pythonhosted.org/packages/fc/69/70c3cec902cac1dea2cfa40d1b2d959645daf383187f0a1061ec1fb60dec/onvif-0.2.0.tar.gz
Collecting suds-passworddigest (from onvif)
Using cached https://files.pythonhosted.org/packages/c0/4b/3a7bfb60ec93467c8bd0cd23262a871e50a093171d7e7caf2a39aebe7cd6/suds_passworddigest-0.1.2.zip
Collecting suds>=0.4 (from onvif)
Downloading https://files.pythonhosted.org/packages/bc/d6/960acce47ee6f096345fe5a7d9be7708135fd1d0713571836f073efc7393/suds-0.4.tar.gz (104kB)
100% |████████████████████████████████| 112kB 700kB/s
Building wheels for collected packages: onvif, suds-passworddigest, suds
Building wheel for onvif (setup.py) ... done
Stored in directory: /root/.cache/pip/wheels/4b/97/c3/46cdd1b29639e9df0af9c25f1d86f48dccf34136fc53b85811
Building wheel for suds-passworddigest (setup.py) ... done
Stored in directory: /root/.cache/pip/wheels/63/39/1b/4a1714cb69d518cb86ad350d8df881d4280ac4e94bd02d5e95
Building wheel for suds (setup.py) ... done
Stored in directory: /root/.cache/pip/wheels/4b/15/96/768b567825a502ba3e308d50e531ee89911af21dec1958e2c5
Successfully built onvif suds-passworddigest suds
Installing collected packages: suds, suds-passworddigest, onvif
Successfully installed onvif-0.2.0 suds-0.4 suds-passworddigest-0.1.2
You are using pip version 19.0.3, however version 19.2.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: IP камеры
Olej писал(а): Можно использовать с Python 2
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera$ python2
Python 2.7.16 (default, Apr 6 2019, 01:42:57)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import onvif
>>> from onvif import ONVIFCamera
>>> from onvif import ONVIFService, ONVIFError
>>> camera = ONVIFCamera('192.168.1.10', 8899, u'admin', '', '/usr/local/wsdl')
>>> response = camera.devicemgmt.GetDeviceInformation()
>>> response
(reply){
Manufacturer = "Partizan"
Model = "HI3518E_50H10L_S39"
FirmwareVersion = "V4.02.R12.C6206510.10010.130300..ONVIF 2.4"
SerialNumber = "b5704599fd5d0240"
HardwareId = "00001"
}
>>> date = camera.devicemgmt.GetSystemDateAndTime()
>>> date
(SystemDateTime){
DateTimeType = "Manual"
DaylightSavings = True
TimeZone =
(TimeZone){
TZ = "EAT-3"
}
UTCDateTime =
(DateTime){
Time =
(Time){
Hour = 13
Minute = 40
Second = 29
}
Date =
(Date){
Year = 2019
Month = 9
Day = 25
}
}
LocalDateTime =
(DateTime){
Time =
(Time){
Hour = 16
Minute = 40
Second = 29
}
Date =
(Date){
Year = 2019
Month = 9
Day = 25
}
}
}
>>> media = camera.create_media_service()
>>> camera.devicemgmt.GetDeviceInformation()
(reply){
Manufacturer = "Partizan"
Model = "HI3518E_50H10L_S39"
FirmwareVersion = "V4.02.R12.C6206510.10010.130300..ONVIF 2.4"
SerialNumber = "b5704599fd5d0240"
HardwareId = "00001"
}
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera$ python2
Python 2.7.16 (default, Apr 6 2019, 01:42:57)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from onvif import ONVIFCamera, ONVIFService, ONVIFError
>>> camera = ONVIFCamera('192.168.1.10', 8899, u'admin', '', '/usr/local/wsdl')
>>> camera.devicemgmt.GetDeviceInformation()
(reply){
Manufacturer = "Partizan"
Model = "HI3518E_50H10L_S39"
FirmwareVersion = "V4.02.R12.C6206510.10010.130300..ONVIF 2.4"
SerialNumber = "b5704599fd5d0240"
HardwareId = "00001"
}
>>> media = camera.create_media_service()
>>> imag = camera.create_imaging_service()
>>> camera.get_definition( 'media' )
(http://192.168.1.10:8899/onvif/Media, '/usr/local/wsdl/media.wsdl')
>>> camera.get_definition( 'imaging' )
(http://192.168.1.10:8899/onvif/imaging, '/usr/local/wsdl/imaging.wsdl')
>>> profiles = media.GetProfiles()
>>> len( profiles )
3
>>> token = media.GetVideoEncoderConfigurations()
>>> len( token )
2
>>> ss=media.GetSnapshotUri( {"ProfileToken" : "001"} )
>>> type( ss )
<type 'instance'>
Код: Выделить всё
olej@ACER:~$ onvif-cli --help
usage: onvif-cli [-h] --host HOST [--port PORT] -u USER -a PASSWORD [-w WSDL]
[-e ENCRYPT] [-v] [--cache-location CACHE_LOCATION]
[--cache-duration CACHE_DURATION]
[service] [operation] [params]
ONVIF Client Command Line Interface
positional arguments:
service Service defined by ONVIF WSDL document
operation Operation to be execute defined by ONVIF WSDL document
params JSON format params passed to the operation.E.g.,
"{"Name": "NewHostName"}"
optional arguments:
-h, --help show this help message and exit
--host HOST ONVIF camera host, e.g. 192.168.2.123, www.example.com
--port PORT Port number for camera, default: 80
-u USER, --user USER Username for authentication
-a PASSWORD, --password PASSWORD
Password for authentication
-w WSDL, --wsdl WSDL directory to store ONVIF WSDL documents
-e ENCRYPT, --encrypt ENCRYPT
Encrypt password or not
-v, --verbose increase output verbosity
--cache-location CACHE_LOCATION
location to cache suds objects, default to /tmp/onvif/
--cache-duration CACHE_DURATION
how long will the cache be exist
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: IP камеры
Домашняя страница проекта RTSP PackageOlej писал(а):Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera/Partizan_IP$ python3 -m pip search rtsp rtsp (1.1.6) - RTSP client Gstreamer-Timelapse-RTSP-Server (0.0.1.post1) - Utility for serving a timelapse over RTSP rtsp-curl (0.6) - Convert rtsp.c to rtsp_curl.py live555 (1.0) - Basic wrapper around live555 to load RTSP video streams pynvr (0.1.12) - Network Video Recorder for recording h264 rtsp IP cameras hikvision_client (0.5) - A graphical client software for Hikvision (and other RTSP-enabled) IP cameras
Features
- fetch a single image as Pillow Image
- open RTSP stream and poll most recent frame as Pillow Image
- preview stream in OpenCV
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera/python-onvif$ sudo python3 -m pip install rtsp
[sudo] пароль для olej:
Collecting rtsp
Downloading https://files.pythonhosted.org/packages/d8/99/b494875950fcb2f13a5e8b7f8a8e7c487620259708964463fadd8836b6e7/rtsp-1.1.6-py3-none-any.whl
Collecting opencv-python (from rtsp)
Downloading https://files.pythonhosted.org/packages/44/35/6db0fa2e644922533ddc2a3c41d1a86dabefce89d9db85ec31dcc69dc2e3/opencv_python-4.1.1.26-cp37-cp37m-manylinux1_x86_64.whl (28.7MB)
|████████████████████████████████| 28.7MB 2.9MB/s
Requirement already satisfied: pillow in /usr/local/lib/python3.7/dist-packages/Pillow-5.4.0-py3.7-linux-x86_64.egg (from rtsp) (5.4.0)
Requirement already satisfied: numpy>=1.14.5 in /usr/local/lib/python3.7/dist-packages (from opencv-python->rtsp) (1.16.1)
Installing collected packages: opencv-python, rtsp
Successfully installed opencv-python-4.1.1.26 rtsp-1.1.6
Код: Выделить всё
olej@ACER:~$ pip3 list | grep Pillow
Pillow 5.4.0
olej@ACER:~$ pip3 list | grep ^numpy
numpy 1.16.1
olej@ACER:~$ pip3 list | grep opencv
opencv-python 4.1.1.26
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: IP камеры
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera/python-onvif$ cat ex1.py
#!/bin/env python3
# -*- coding: utf-8 -*-
import rtsp
client = rtsp.Client( rtsp_server_uri = 'rtsp://192.168.1.10:554/user=admin_password=6QNMIQGe_channel=1_stream=1.sdp' )
client.read().show()
client.close()
P.S. Но очень важно, чтов описании пакета сказано:
Special URIs are also recognized for convenience:
- integers will load a local USB or webcam starting with interface 0 via OpenCV e.g. rtsp.Client(0)
- 'picam' uses a Raspberry Pi camera as source e.g. rtsp.Client('picam')
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera/python-onvif$ ./ex1.py
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Python: IP камеры
Непрерывны просмотр потока:
То что кадр-пример затемнён - так это уже с настройками нужно разбираться.
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/IP-camera/python-onvif$ cat ex2.py
#!/bin/env python3
# -*- coding: utf-8 -*-
import rtsp
with rtsp.Client( rtsp_server_uri = 'rtsp://192.168.1.10:554/user=admin_password=6QNMIQGe_channel=1_stream=1.sdp' ) as client:
client.preview()
- Вложения
-
- ex2.png (19.77 КБ) 2088 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей