Возможность получать изображения из видеопотока веб-камеры ip в локальной сети, но не работает в облачной функции, экземпляр виртуальной машины Google Compute Engine - PullRequest
0 голосов
/ 14 июня 2019

Я установил IP-камеру в моем Android и потоковое видео. Если я открою URL, он показывает живое видео в моем веб-браузере. Я могу успешно получать изображения из потокового видео в реальном времени, используя python на моей локальной машине. Но тот же код не работает в экземпляре виртуальной машины Google Compute Engine и через облачную функцию

Я пытался реализовать несколько решений, опубликованных в SO, но ни одно из них не сработало.

 import requests
 import numpy as np
 import cv2
 import os

 path_output_dir = 'path-folder'
 count = 6


 img_res = requests.get("http://ipaddress:8080/shot.jpg")
 img_arr = np.array(bytearray(img_res.content), dtype = np.uint8)
 img = cv2.imdecode(img_arr,-1)
 cv2.imwrite(os.path.join(path_output_dir, '%d.jpeg') % count, img)

Сообщение об ошибке в облачной функции:

TimeoutError: [Errno 110] Тайм-аут соединения Во время обработки вышеуказанного исключения произошло другое исключение: обратная связь (последний вызов был последним): файл "/env/local/lib/python3.7/site-packages/urllib3/ connectionpool.py ",

urllib3.exceptions.NewConnectionError:: Не удалось установить новое соединение: [Errno 110] Истекло время ожидания соединения Во время обработки вышеуказанного исключения произошло другое исключение: Traceback (последний вызов был последним):

ResponseError (причина)) urllib3.exceptions.MaxRetryError: HTTPConnectionPool (host = '192.168.0.24', port = 8080): превышено максимальное количество попыток с помощью url: /shot.jpg (вызвано NewConnectionError (': не удалось установить новое соединение: [Errno 110] Тайм-аут соединения ')) request.exceptions.ConnectionError: HTTPConnectionPool (host =' 192.168.0.24 ', port = 8080): Превышено максимальное количество попыток с помощью url: /shot.jpg (вызвано NewConnectionError (' : Не удалось установить новое соединение: [Errno 110] Время ожидания истекло '))

1 Ответ

0 голосов
/ 17 июня 2019

192.168.0.24 - это IP-адрес в вашей локальной сети.Он не виден снаружи вашей локальной сети.

Вы можете попробовать переадресацию портов на своем маршрутизаторе (, вот пример для Linksys ), поэтому облачный экземпляр может видеть вашу камеру через вашобщедоступный IP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...