python - 使用 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())'''
解决方案
推荐阅读
- bash - 如何在 bash 中编码以将作业发送到集群
- javascript - 将 npm 包编译成单个 js 文件
- angularjs - Angular Overlay withTransformOriginOn 用法
- asp.net-core - 如何订阅 MS Graph 日历(不是日历事件)更改通知,即创建/删除新日历等?
- python - sklearn.manifold.SpectralEmbedding() 距离度量
- reactjs - 如何在 React 中单独更改每个页面上的元数据
- javascript - 如何通过 sourcemaps 在浏览器中访问原始源文件
- postman - 无法从邮递员中的 pm.sendRequest() 获取响应 json
- java - 运行测试时,预计至少有 1 个 bean 有资格作为自动装配候选者
- java - 发送 HTTP 响应而不等待方法 Spring Webflux Rest 的执行