Python 通过 ML 流程从网络摄像头流式传输到互联网

问题描述 投票:0回答:1

我正在尝试用 Python 开发一个程序,通过 ML 过程将网络摄像头捕获的视频流式传输到“互联网”。

是否有专门的 Python 包旨在处理实时网络摄像头捕获和来自互联网的流式传输/接收?我对 ML 流程了解得相当清楚,但目前需要从存储加载,而我试图从本质上了解如何用 Python 制作 P2P 视频聊天客户端。

任何指针都非常感谢

python video-streaming
1个回答
0
投票

您可以使用

opencv-python
从网络摄像头捕获视频,如下所示:

import cv2

cap = cv2.VideoCapture(0)  # Open the default camera (0)

while True:
    ret, frame = cap.read()  # Read a frame from the webcam

    # Perform your ML processing here on 'frame'

    cv2.imshow('Webcam', frame)  # Display the frame

    if cv2.waitKey(1) & 0xFF == ord('q'):  # Press 'q' to exit
        break

cap.release()
cv2.destroyAllWindows()

对于通过网络流式传输视频,您可以使用

imagezmq
库将 OpenCV 图像从一台计算机流式传输到另一台计算机。它基于 ZeroMQ,这是一个消息传递库,允许您通过网络连接多个设备。

对于发送设备:

import cv2
import zmq
import base64

context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5555")  # Set the appropriate address and port

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    
    # Perform your ML processing here on 'frame'

    _, buffer = cv2.imencode('.jpg', frame)
    jpg_as_text = base64.b64encode(buffer)
    socket.send(jpg_as_text)

cap.release()

对于接收设备:

import zmq
import cv2
import numpy as np
import base64

context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://sender_ip:5555")  # Replace 'sender_ip' with the actual sender's IP

socket.setsockopt_string(zmq.SUBSCRIBE, '')

while True:
    jpg_as_text = socket.recv()
    jpg_original = base64.b64decode(jpg_as_text)
    jpg_as_np = np.frombuffer(jpg_original, dtype=np.uint8)
    frame = cv2.imdecode(jpg_as_np, flags=1)

    cv2.imshow('Receiver', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):  # Press 'q' to exit
        break

cv2.destroyAllWindows()

这是视频流设置的基本方法,使用

OpenCV
进行网络摄像头捕获、帧上的 ML 处理,并使用
imagezmq
通过网络流传输帧。但请记住,设置 P2P 视频聊天客户端涉及更多复杂性,例如处理网络发现、建立连接、处理延迟以及可能合并信令协议。对于成熟的 P2P 视频聊天,您可以考虑专门为实时通信设计的其他库或框架,例如 WebRTC。 您可以从我发现的本教程中获得更清晰的想法:https://pyimagesearch.com/2019/04/15/live-video-streaming-over-network-with-opencv-and-imagezmq/

© www.soinside.com 2019 - 2024. All rights reserved.