python摄像头流媒体服务器
Posted Rainflow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python摄像头流媒体服务器相关的知识,希望对你有一定的参考价值。
from flask import Flask, render_template, Response
import cv2
app = Flask(__name__)
camera = cv2.VideoCapture(0)
def generate_frames():
while True:
success, frame = camera.read()
if not success:
break
else:
ret, buffer = cv2.imencode(\'.jpg\', frame)
frame = buffer.tobytes()
yield (b\'--frame\\r\\n\'
b\'Content-Type: image/jpeg\\r\\n\\r\\n\' + frame + b\'\\r\\n\')
@app.route(\'/\')
def video_feed():
return Response(generate_frames(), mimetype=\'multipart/x-mixed-replace; boundary=frame\')
if __name__ == \'__main__\':
app.run(debug=True)
浏览器将摄像头流推送到媒体服务器
【中文标题】浏览器将摄像头流推送到媒体服务器【英文标题】:broswer push camera stream to media server 【发布时间】:2020-06-11 03:28:39 【问题描述】:大家。我需要一些帮助来解决一些流问题,这是我的待办事项清单。 我想通过 broswer 将我的相机流、麦克风流传输到媒体服务器和 python 服务器 需要拉这个流来做一些 asr、tts 的事情。之后,它会生成一个回复流并推送回媒体服务器,然后浏览器拉取这个流。我的计划是这样的。
-
浏览器流到 rtmp 服务器使用 rtmp 协议
python 服务器使用 rtmp 拉取这个流
python 服务器将其回复推送到 rtmp 服务器
浏览器拉一下
但是,我的问题是如何将 rtmp 流式传输到 rtmp 服务器?因为据我所知,我可以在浏览器中使用 webrtc 来执行此操作?
所以过程可能是这样的?
-
浏览器流到 janus(或其他 webrtc 服务器)使用 webrtc
python 使用 webrtc 拉取这个流
python 服务器将其回复推送给 janus
浏览器使用 webrtc 拉取此流
但是,我不确定是否可以完成第 2 步或第 3 步,因为我不知道如何在 python 环境中使用 webrtc 并且没有浏览器并使用我自己的流(不是相机流)
或者janus可以将webrtc流转换并推送到rtmp服务器吗?
如有任何帮助,将不胜感激。
【问题讨论】:
【参考方案1】:我知道使用mediasoup,您可以使用 webrtc 将摄像头发送到服务器。然后您可以使用服务器通过 rtp 将其重新传输到您的算法,最后再次使用 webrtc 将响应发送回客户端。
【讨论】:
感谢您的回复,最后我选择了rtmp来做。我发现带有 Flash Flugin 的浏览器可以将 rtmp 流发送到服务器。并且算法使用ffmpeg拉取rtmp流,并将响应发送回rtmp服务器,最后,broswer拉取这个流。 @hahoo 这个插件叫什么? 我使用 janus 而不是 mediasoup,我不知道 janus 如何使用 rtp 将 webrtc 流重新传输到我的算法,我也不知道如何使用 webrtc 发送自己的流(我只知道如何使用相机流..) @hahoo 顺便说一下,你可以将 rtp 发送到 ffmpeg,这是 mediasoup 的用例之一 闪存播放器。哦,我去学习一下这个webrtc服务器,我觉得janus流插件能做的事情很少(可能是我学的不够深),谢谢..以上是关于python摄像头流媒体服务器的主要内容,如果未能解决你的问题,请参考以下文章
使用 WebRTC 从网络摄像头捕获媒体流,将流发布到媒体服务器并从那里分发
SRS流媒体服务器搭建及拉取摄像头视频流经opencv处理后再推流至SRS
RTSP安防摄像头/海康大华硬盘录像机/NVR网页低延时播放流媒体服务器EasyNVR调取接口报Unauthorized如何解决?