利用 flask 將 opencv 實時影片流輸出到瀏覽器--高效能

CriseLYJ發表於2019-03-05
  • 解決了所有問題,而且不消耗效能,使用了yield生成器,完美解決效能問題!
  • 還會繼續貢獻程式碼,連結在底部,大哥們如果喜歡記得給個star哦!
  • opencv 透過 webcam 可以獲取本地實時影片流,但是如果需要將影片流共享給其他機器呼叫,就可以將利用 flask 框架構建一個實時影片流伺服器,然後其他機器可以透過向這個伺服器傳送請求來獲取這臺機器上的實時影片流。

    multipart 模式

  • 想要將後一次請求得到的圖片覆蓋到前一次從而達到動畫的效果就需要使用在 response 的時候使用 multipart 模式。Multipart response 由以下幾部分組成:包含 multipart content 型別的 header,分界符號分隔的各個 part,每個 part 都具有特定的 content 型別。multipart 影片流的結構如下:

    HTTP/1.1 200 OK
    Content-Type: multipart/x-mixed-replace; boundary=frame
    
    --frame
    Content-Type: image/jpeg
    
    <jpeg data here>
    --frame
    Content-Type: image/jpeg
    
    <jpeg data here>
    ...

    在這裡插入圖片描述

這裡解決了一次只能被一臺機器檢視的侷限性

  • 問題已解決
  • 如果影片流一直存在的話,這個 app 能輸出影片流的的客戶端的數量和 web worker 的數量相同,在 debug 模式下,這個數量是 1,也就是說只有一個瀏覽器上能夠看到影片流輸出。如果要克服這種侷限的話,使用基於協同網路服務的框架比如 gevent,可以用一個 worker 執行緒服務多個客戶端。不過問題已經解決,可以使用各種姿勢食用

    已解決

  • 新增功能
  • 這裡增加了登入與退出登入功能
  • 還增加了影片的錄製
  • 還會繼續貢獻程式碼完善專案!!!
  • 地址 : Github 專案地址
  • 如果覺得小弟的專案不錯,麻煩給個 star 嘍!
  • 附上登入頁面截圖
    在這裡插入圖片描述
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章