INTUWIZ                        Intuitive Wizard
intuwiz Software
 Трансляция видео с модуля камеры одноплатного компьютера Raspberry Pi


В данной статье будет рассмотрен вопрос трансляции видео с модуля камеры одноплатного компьютера Raspberry Pi посредством созданного веб сервера на Raspberry Pi и фреймворка Flask.

Краткий видеоролик можно посмотреть ниже.

 

 

Установим фреймворк Flask, служащий для создания веб-приложений на языке программирования Python, для чего откроем терминальное окно и выполним следующую команду:

                                                         sudo apt-get install python3-flask

Установка Flask

Далее создадим на рабочем столе папку "RpiWebServer" и внутри её две папки под названиями "static" и "templates".

Трансляция видео с модуля камеры одноплатного компьютера Raspberry Pi

Загружаем модуль StartServer.py и сохраняем его в нашей уже созданной папке RpiWebServer.

Текст модуля StartServer.py  представлен ниже.

from flask import Flask, render_template, Response

from RPi_cam 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', port =80, debug=True, threaded=True)

Создаем  html страницу и размещаем её в созданной папке  templates.

html

В папке static размещаем файл style.css  , текст файла ниже. 

body{ background: SkyBlue; }

Также в папке RpiWebServer необходимо разместить файл RPi_cam.py текст которого представлен ниже

import time
import io
import threading
import picamera


class Camera(object):
    thread = None
    frame = None
    last_access = 0
    
    def initialize(self):
        if Camera.thread is None:
            Camera.thread = threading.Thread(target=self._thread)
            Camera.thread.start()

            while self.frame is None:
                time.sleep(0)

    def get_frame(self):
        Camera.last_access = time.time()
        self.initialize()
        return self.frame

    @classmethod
    def _thread(cls):
        with picamera.PiCamera() as camera:
            
            camera.resolution = (1024, 768)
            camera.hflip = True
            camera.vflip = True

            camera.start_preview()
            time.sleep(2)

            stream = io.BytesIO()
            for foo in camera.capture_continuous(stream, 'jpeg',
                                                 use_video_port=True):
                stream.seek(0)
                cls.frame = stream.read()

                stream.seek(0)
                stream.truncate()

                if time.time() - cls.last_access > 5:
                    break
        cls.thread = None

Далее для организации доступа к создаваемому на компьютере Raspberry Pi серверу видеотрансляции нам следует знать сетевой адрес  компьютера Raspberry Pi.


Узнать сетевой адрес нашего одноплатного компьютера можно двумя способами.

Способ 1. Требуется выполнить нижеследующую команду на самом Raspberry Pi:

                                                         ifconfig

fconfig

Сетевой адрес в данном случае - 192.168.1.101.

Способ 2.Можно узнать сетевой адрес Raspberry Pi, используя веб интерфейс роутера.

ip адрес с помощью роутера

Запускаем сервер видеотрансляции на одноплатном компьютере Raspberry Pi следующей командой:

                           sudo python3 /home/pi/Desktop/RpiWebServer/StartServer.py

Запуск сервера видеотрансляции Raspberry Pi

 

На удаленном компьютере, подключенном к нашей сети, открываем браузер Google Chrome, в адресной строке браузера набираем определенный нами сетевой адрес компьютера Raspberry Pi и наблюдаем потоковую видеотрансляцию.

 

Вернуться на главную страницу раздела "Одноплатные компьютеры Raspberry Pi"

 

   

 
Все права защищены © 2024 Intuwiz Software
Главная || Raspberry Pi || Трансляция видео посредством Flask.