我們希望基于Flask框架在樹莓派上搭建一個流媒體服務(wù)器。該應(yīng)用將樹莓派攝像頭所捕捉到的圖像實(shí)時的在web端進(jìn)行顯示。
這篇文章 motion-jpeg?(an update)基于 Flask 框架,將視頻源分割成獨(dú)立的圖片,采用 Flask 的 generator 函數(shù)實(shí)現(xiàn)了視頻的實(shí)時播放。其特點(diǎn)在于簡單宜用,缺點(diǎn)在于視頻質(zhì)量較差。這種方法廣泛用于 IP security camera 應(yīng)用中。
對于高質(zhì)量的流媒體播放,其技術(shù)路線需要從兩個方面展開。一種就是錄播類的媒體播放,如我們平時所瀏覽的視頻類網(wǎng)站。另一種則是實(shí)時的媒體播放,如直播網(wǎng)站。當(dāng)我們考慮高質(zhì)量流媒體播放時,我們需要采用一些流媒體協(xié)議例如:HLS、RTSP 或 RTMP等。如果從另一個角度考慮,可以將流媒體協(xié)議分為另外兩部分。
1. Adobe Flash: RTMP、RTSP、RTP、RTCP、HTTP-FLV
2. HTML5:? ? ? ? ? ??HLS、WebSocket、WebRTC
關(guān)于HLS的介紹可以參見 Jerry QU?的博客。該博客寫于2015年,當(dāng)時主要的商用協(xié)議為RTMP和HLS。
對于流媒體直播還需要考慮 CDN 技術(shù)(盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母?、更穩(wěn)定。通過在網(wǎng)絡(luò)各處放置節(jié)點(diǎn)服務(wù)器所構(gòu)成的在現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò),CDN系統(tǒng)能夠?qū)崟r地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載狀況以及到用戶的距離和響應(yīng)時間等綜合信息將用戶的請求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點(diǎn)上)。類似于快遞小哥