首页 > 解决方案 > 使用 Python 设置 RTSP 流媒体服务器

问题描述

我有一个项目需要在 Python 中使用 OpenCV 执行分析,并使用 .NET WPF 应用程序作为前端。

我已经准备好它的分析部分和 .NET 应用程序。我遇到的问题是将处理后的视频流从 Python 传递到 .NET 应用程序。

我正在探索的解决方案之一是设置 RTSP 流服务器,并让前端应用程序充当客户端,读取流数据。

这是我目前正在使用的代码,但我似乎无法通过流获得输出。

如果有任何明显的错误,或者即使有更好的方法来为我的用例实施解决方案,请告诉我。任何帮助,将不胜感激!

import cv2
import subprocess as sp
if __name__ == "__main__":
    rtsp_server = 'rtsp://127.0.0.1:5000/stream1'
    
    #pull rtsp data, or your cv cap.  (input server)
    cap = cv2.VideoCapture("rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov")
    
    
    sizeStr = str(int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))) + \
        'x' + str(int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    fps = int(cap.get(cv2.CAP_PROP_FPS))
    
    command = ['ffmpeg',
               '-re',
               '-s', sizeStr,
               '-r', str(fps),  # rtsp fps (from input server)
               '-i', '-',
               
               # You can change ffmpeg parameter after this item.
               '-pix_fmt', 'yuv420p',
               '-r', '30',  # output fps
               '-g', '50',
               '-c:v', 'libx264',
               '-b:v', '2M',
               '-bufsize', '64M',
               '-maxrate', "4M",
               '-preset', 'veryfast',
               '-rtsp_transport', 'tcp',
               '-segment_times', '5',
               '-f', 'rtsp',
               rtsp_server]

    process = sp.Popen(command, stdin=sp.PIPE, shell = True)

    while(cap.isOpened()):
        ret, frame = cap.read()
        ret2, frame2 = cv2.imencode('.png', frame)
        process.stdin.write(frame2.tobytes())'''

标签: python.netserverrtsp

解决方案


推荐阅读