Как получить поток HTTP с камеры Wi-Fi сжатый формат: h.264 на python? - PullRequest
2 голосов
/ 12 февраля 2020

Hy! Я работаю над проектом для школы с использованием Wi-Fi камеры HD-очков, которая использует сжатый формат H.264. Я прочитал много документации о том, как получить кадры с камеры, но я не должен справляться со своей проблемой. Мой код выглядит следующим образом:

import cv2

while True:
    cap = cv2.VideoCapture('http://admin:@192.168.10.1/videostream.asf?user=admin&pwd=') 
    ret, frame = cap.read()
    print(frame) 

Я только хочу видеть, что он получает правильно кадры, но он пропускает ошибки, как это:

[h264 @ 0x1e0a100] non-existing PPS 0 referenced

[h264 @ 0x1e0a100] non-existing PPS 0 referenced

[h264 @ 0x1e0a100] decode_slice_header error

[h264 @ 0x1e0a100] no frame!

Я действительно ценю помощь! Спасибо! : D

1 Ответ

0 голосов
/ 17 февраля 2020

С небольшой помощью комментариев я смог решить свою проблему и работает с некоторой начальной потерей кадров.

import cv2
from threading import Thread
import time




url = ('http://admin:@192.168.10.1/videostream.asf?user=admin&pwd=')


class VideoStream(object):
    def __init__(self,url = ('http://admin:@192.168.10.1/videostream.asf?user=admin&pwd=')):
            self.capture = cv2.VideoCapture(url)
            self.thread = Thread(target=self.update, args=())
            self.thread.daemon = True
            self.thread.start()

    def update(self):
            while True:
                    if self.capture.isOpened():
                            (self.status, self.frame) = self.capture.read()
                    time.sleep(.01)

    def show_frame(self):
            cv2.imshow('frame', self.frame)
            key = cv2.waitKey(1)
            if key == ord('q'):
                    self.capture.release()
                    cv2.destroyAllWindows()
                    exit(1)

if __name__ == '__main__':
    video_stream = VideoStream()
    while True:
            try:
                    video_stream.show_frame()
            except AttributeError:
                    pass

Скопировано по этой ссылке: Потоковое видео с IP-камеры в Python Использование OpenCV cv2.VideoCapture

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