首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Raspberry Pi Zero实现鲁棒低延迟视频流到浏览器的最佳方法

使用Raspberry Pi Zero实现鲁棒低延迟视频流到浏览器的最佳方法
EN

Stack Overflow用户
提问于 2022-10-11 18:13:26
回答 1查看 75关注 0票数 0

我想将从我的Raspberry camera的摄像头上捕获的实时视频提要流到尽可能低延迟(<1s)的浏览器上。我的最终目标是将Camera &摄像机附加到无人机上,并通过LTE播放视频。

然而,我有点迷失在这里存在的不同解决方案的丛林中(MJPEG、RTMP、RTSP、WebRTC)。

到目前为止,我在本指南之后尝试了一个简单的mjpeg流

代码语言:javascript
运行
复制
import cv2
import  pyshine as ps #  pip3 install pyshine==0.0.9

HTML="""
<html>
<head>
<title>PyShine Live Streaming</title>
</head>

<body>
<center><h1> PyShine Live Streaming using OpenCV </h1></center>
<center><img src="stream.mjpg" width='320' height='240' autoplay playsinline></center>
</body>
</html>
"""
def main():
    StreamProps = ps.StreamProps
    StreamProps.set_Page(StreamProps,HTML)
    address = ('127.0.0.1',9000) # Enter your IP address
    try:
        StreamProps.set_Mode(StreamProps,'cv2')
        capture = cv2.VideoCapture(0)
        if capture.isOpened():
            capture.set(cv2.CAP_PROP_BUFFERSIZE,2)
            capture.set(cv2.CAP_PROP_FRAME_WIDTH,240)
            capture.set(cv2.CAP_PROP_FRAME_HEIGHT,320)
            capture.set(cv2.CAP_PROP_FPS,8)
            StreamProps.set_Capture(StreamProps,capture)
            StreamProps.set_Quality(StreamProps,40)
            server = ps.Streamer(address,StreamProps)
            print('Server started at','http://'+address[0]+':'+str(address[1]))
            server.serve_forever()

    except KeyboardInterrupt:
        capture.release()
        server.socket.close()

if __name__=='__main__':
    main()

虽然这个简单解决方案的延迟足够低,但对于我的用例来说,它远远不够健壮。每当连接中断时,流就停止,直到刷新浏览器。随着缓慢的互联网,流往往有一个大的延迟(15或更多)后一段时间。

用例应该使用什么样的解决方案?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2022-10-13 21:08:44

WebRTC是为您的用例设计的,也是您应该使用的。

整个堆栈面向低延迟,以牺牲质量、自动转换比特率、必要时丢弃帧等为代价。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74032426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档