樹莓派+Flask實(shí)現(xiàn)視頻流媒體WEB服務(wù)器
在這個(gè)項(xiàng)目中我們將主要學(xué)習(xí)兩個(gè)模塊。
1、樹莓派V3 X1
2、樹莓派3 B型帶NoIR夜間相機(jī) X1
3、DHT22溫度傳感器 X1
4、DHT22相對(duì)濕度傳感器 X1
5、電阻4K7歐姆 X1
在這個(gè)項(xiàng)目中,我使用的是夜間相機(jī),你也可使用普通的樹莓派相機(jī)(或任何USB相機(jī))來替代。DHT22為可選。在教程中,我將演示如何將視頻流傳輸?shù)絎EB頁(yè)面,并用傳感器來顯示歷史數(shù)據(jù)。
安裝攝像機(jī)1、關(guān)閉樹莓派,將相機(jī)安裝在其特定端口上,如下所示:
2、打開你的樹莓派并轉(zhuǎn)到樹莓派配置工具的主菜單上,并確認(rèn)相機(jī)接口是否開啟:
如果你需要開啟它,請(qǐng)按[確定]并重新啟動(dòng)你的樹莓派。
做一個(gè)簡(jiǎn)單的測(cè)試來驗(yàn)證一切是否正常: raspistill -o /Desktop/image.png
你會(huì)看到,在到你樹莓派桌面上會(huì)出現(xiàn)一個(gè)圖像圖標(biāo)。 點(diǎn)擊打開它。 如果出現(xiàn)圖像,說明已準(zhǔn)備好流式傳輸視頻!如果你想獲得更多關(guān)于相機(jī)的信息,可點(diǎn)擊燝etting started with picamera.。
安裝FLASK有好幾種方法可以流式傳輸視頻。我認(rèn)為最好的(也是“更輕松”)方法是使用Miguel Grinberg開發(fā)的Flask。有關(guān)Flask如何執(zhí)行此操作的詳細(xì)說明,請(qǐng)參閱他的精彩教程:flask-video-streaming-revisited。
在我這個(gè)教程中:Python Web服務(wù)器將借助Flask和樹莓派。我們要更詳細(xì)地了解了Flask是如何工作、如何實(shí)現(xiàn)Web服務(wù)器以及從傳感器上捕獲數(shù)據(jù)并在網(wǎng)頁(yè)上顯示其狀態(tài)。在本教程中的第一部分就是發(fā)送到我們前端的數(shù)據(jù)的視頻流。
創(chuàng)建一個(gè)Web服務(wù)器環(huán)境:
首先要做的是在你的樹莓派上安裝Flask。 如果沒有,,去終端并輸入:
當(dāng)你開始一個(gè)新項(xiàng)目時(shí),最好的辦法就是創(chuàng)建一個(gè)文件夾來保存你的文件。 例如:
回到主頁(yè),到你的工作目錄:
新建文件夾,例如:
mkdir camWebServer按照上面的命令,創(chuàng)建一個(gè)名為“camWebServer”的文件夾,并在這里保存我們的python腳本:
/home/pi/Document/ camWebServer現(xiàn)在,在這個(gè)文件夾上,我們將創(chuàng)建兩個(gè)子文件夾:靜態(tài)的CSS、最終的JavaScript文件以及HTML文件的模板。 轉(zhuǎn)到你的新創(chuàng)建的文件夾:
cd camWebServer并創(chuàng)建2個(gè)新的子文件夾:
mkdir static和
mkdir templates最終的目錄“樹”,如下所示:
├── Documents ├── camWebServer ├── templates └── static完成!讓我們?cè)趧?chuàng)建好的的環(huán)境下,用Python Web 服務(wù)器應(yīng)用程序來流式傳輸視頻。
創(chuàng)建視頻流媒體服務(wù)器首先,下載Miguel Grinberg的樹莓派相機(jī)軟件包:camera_pi.py并將其保存在創(chuàng)建的目錄camWebServer上。 這是我們項(xiàng)目的核心,Miguel的安裝包相當(dāng)?shù)牟诲e(cuò)。
現(xiàn)在,使用Flask,讓我們調(diào)整原始的Miguel的web服務(wù)器應(yīng)用程序(app.py),創(chuàng)建一個(gè)特定的python腳本來渲染我們的視頻。 我們可以命名為appCam.py: from flask import Flask, render_template, Response # Raspberry Pi camera module (requires picamera package, developed by Miguel Grinberg) from camera_pi import Camera app = Flask(__name__) @app.route('http://shumeipai.nxez.com/') def index(): """Video streaming home page.""" return render_template('index.html') def gen(camera): """Video streaming generator function.""" while True: frame = camera.get_frame() yield (b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n') @app.route('/video_feed') def video_feed(): """Video streaming route. Put this in the src attribute of an img tag.""" return Response(gen(Camera()), mimetype='multipart/x-mixed-replace; boundary=frame') if __name__ == '__main__': app.run(host='0.0.0.0', port =80, debug=True, threaded=True)
以上腳本將你的攝像機(jī)視頻流式傳輸?shù)絠ndex.html頁(yè)面上,如下所示:
本文編號(hào):2331725
本文鏈接:http://sikaile.net/wenshubaike/jajx/2331725.html