基于Tornado 用websocket ArrayBuffer格式在網頁上播放RTSP實時流

在網頁上用websocket播放RTSP實時流 性能優(yōu)化 進階方案
上篇文章,介紹了提高 視頻流播放性能 的進階方案, 現在實現一個完整的項目。

  • 使用Tornado開發(fā)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

開發(fā)環(huán)境

Python3.7

解碼視頻流

使用 imutils 庫解碼視頻流,提高解碼速度。
將得到的圖片轉為字節(jié)存儲到進程間共享隊列 multiprocessing.Queue()

image.png

推送服務

從隊列中取出后,調用 websocket write_message 發(fā)送

image.png

Websocket服務

image.png

前端JS

websocket 連接設置 binaryType: 'blob'
FileReader 讀取二進制數據為ArrayBuffer

image.png

轉為Blob對象


image.png

展示在前端 img 標簽


image.png

這樣就可以實現網頁播放實時RTSP視頻流啦。

完整代碼git地址:tornado_websocket_stream

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容