picameraとFlaskを使用してRaspberry PiカメラをHTML Webページにストリーミングする


8

picamera APIとFlask を使用して、Raspberry Piカメラモジュールからの連続JPEGの純粋なPython(ライブ)ストリームを実装してHTMLテンプレートを使用して表示しようとしていますが、「404 not foundエラー」が発生し続けますか?

私はこの特定の主題について少し経験がありません。事前に謝罪してください。

 app.route('/test/')
    def vid():
            with picamera.PiCamera() as camera:
                    stream = io.BytesIO()
                    for foo in camera.capture_continuous(stream, format='jpeg'):

                            stream.truncate()
                            stream.seek(0)

                            if process(stream):
                                break

HTMLコードは次のとおりです。

 <img src="{{ url_for('vid') }}"width='950px' height='450px'>

3
404の種類は、間違ったURLまたはポート番号を使用している可能性があることを示しています。コンテンツがコメントアウトされている場合、ページにアクセスできることを確認できますか?
16

if name == ' main ':app.run(host = '169.254.21.3)の後にrender_template関数を配置したことに気づきましたが、新しいエラー「werkzeug.routing.BuildError、BuildError:Could not build urlエンドポイント「vid」用。代わりに「静的」という意味ですか?」と感謝
crispy2k12

1
「app.route」の前に@記号を付けて再実行してみてください。
16

乾杯、私は本当に私の構文をチェックする必要があります、今私のページは表示されていますが、ストリームが表示されていませんか?
crispy2k12

1
vid()関数から何も返さない-jpegを収集するが、ビューに渡さない。インポートを追加:フラスコインポートsend_fileから、および外ループのために、追加してください:戻りsend_file(ストリーム、MIMEタイプ=「画像/ JPEG」)
goobering

回答:


5

私はもう少し読みましたが、あなたのアプローチが望みどおりに機能することはないと思います。ここでの Miguel Grinbergの記事は、FlaskへのRaspberry Piカメラのストリーミングを実現する方法の概要を説明し、いくつかの有用な例を紹介しています。ジェネレーター関数とマルチパートレスポンスタイプを使用してアニメーションストリーミングを実現する、シンプルで完全な(非Piカメラ)プログラムが提供されています。

#!/usr/bin/env python
from flask import Flask, render_template, Response
from camera import Camera

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

def gen(camera):
    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():
    return Response(gen(Camera()),
                    mimetype='multipart/x-mixed-replace; boundary=frame')

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug=True)

/video-feedルートが、gen(camera)関数によって継続的に生成されるマルチパートレスポンスタイプオブジェクトを返すことがわかります。このアプローチがなければ、私は静止画像があなたがこれまでに見るすべてのものであると疑っています。上記のチュートリアルに基づいた、picamera-to-Flaskストリーミングアプリケーションの完全な例がここにあります


ちょっとしたメモですが、例は完全ではありませんcamera.py。チュートリアルの追加ファイル()が必要です。
machow 2016年

-1

インポートカメラをピカメラに変更するだけです。ffpmeg ang mpeg-streamerをインストールする必要があります。これら2つのモジュールが機能しない場合は、uv4lもインストールしてください。その後再起動して動作します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.