GoPro в качестве удаленной веб-камеры с помощью Python
У меня есть GoPro Hero 7 White, и я недавно обнаружил, что могу использовать его, как и удаленную веб-камеру, используя пакет Python под названием GoPro API для Python, доступный по адресу https://github.com/konradit/gopro-py-api.
Сначала установите пакет pip3 install goprocam
, затем включите соединение Wi-Fi на GoPro.
Это заставляет GoPro запускать сеть Wi-Fi. Подключитесь к этой сети с компьютера.
Теперь вы готовы написать свою программу на Python, чтобы делать с веб-камерой все, что вы хотите.
Импорт GoProCamera
и constants
из goprocam
:
from goprocam import GoProCamera, constants
Затем вызовите метод GoProCamera.GoPro()
, чтобы получить объект камеры:
gopro = GoProCamera.GoPro(constants.gpcontrol)
Получите обзор состояния камеры, используя
gopro.overview()
В моем случае я распечатал это:
camera overview
current mode: Photo
current submode: Burst
current video resolution: out of scope
current video framerate: 240
pictures taken: 0
videos taken: 0
videos left: 02:10:44
pictures left: 11257
battery left: Halfway
space left in sd card: 58.04GB
camera SSID: HERO7 White
Is Recording: Not recording - standby
Clients connected: 2
camera model: HERO7 White
firmware version: H18.02.02.10.00
serial number: C3343323864041
Теперь вы можете использовать различные методы, которые заставят GoPro действовать.
Сделать фото можно сразу:
gopro.take_photo()
Вы можете сделать фото через 2 секунды:
gopro.take_photo(2)
Вы можете снять 10-секундное видео:
gopro.shoot_video(10)
Или просто начните запись без предустановленного времени окончания, используя
gopro.shoot_video()
Вы можете скачать последний снимок или видео, используя
gopro.downloadLastMedia()
Вы также можете задать имя для файла:
gopro.downloadLastMedia("pic.JPG")
Совет: Я столкнулся с ошибкой, которая не позволяла мне загрузить картинку при вызовеdownloadLastMedia()
. Я получал сообщение об ошибке «Не поддерживается при записи или обработке носителя». Мне пришлось вызватьgopro.getStatusRaw()
, прежде чем вызывать,downloadLastMedia()
чтобы исправить это.