基于Tornado 用websocket ArrayBuffer格式在网页上播放RTSP实时流

在网页上用websocket播放RTSP实时流 性能优化 进阶方案
上篇文章,介绍了提高 视频流播放性能 的进阶方案, 现在实现一个完整的项目。

  • 使用Tornado开发websocket服务
  • 使用Opencv对RTSP流进行解码
  • 前端ArrayBuffer读取二进制数据, 转为Blob对象
  • FileReader读取Blob为base64字符串,由img标签显示图片

Torando 在高版本5.0+ , 在Application中加入线程,会出现 RuntimeError: There is no current event loop in thread 'Thread-1'.错误, 建议降低版本为4.5

开发环境

Python3.7

解码视频流

使用 imutils 库解码视频流,提高解码速度。
将得到的图片转为字节存储到进程间共享队列 multiprocessing.Queue()

image.png

推送服务

从队列中取出后,调用 websocket write_message 发送

image.png

Websocket服务

image.png

前端JS

websocket 连接设置 binaryType: 'blob'
FileReader 读取二进制数据为ArrayBuffer

image.png

转为Blob对象


image.png

展示在前端 img 标签


image.png

这样就可以实现网页播放实时RTSP视频流啦。

完整代码git地址:tornado_websocket_stream

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容