Я разместил простое приложение Flask на веб-сервере Apache на Raspberry Pi для потоковой передачи видео в реальном времени с PiCamera с использованием учебного пособия https://blog.miguelgrinberg.com/post/video-streaming-with-flask.Локально у меня все работает, и я могу получить доступ к своему http://localip:5000, чтобы получить видео в реальном времени.Теперь я хотел разместить это на рабочем сервере, и я использовал Apache.Я установил все файлы конфигурации и структуры каталогов, связанные с моим приложением Flask, и настроил сервер на порт 80. Я захожу на http://ip:80, и моя веб-страница загружается с заголовком, заголовком и статическим текстом, но видео, которое должно бытьниже это теперь изображение "сломанного изображения".Изучение видеоэлемента веб-страницы в браузере показывает, что сервер ничего не возвратил.
Я видел еще один пост Видео Straming на raspberrypi с использованием фляги apche2 и wsgi server , парня, который столкнулся с той же проблемойКак мой.Он отметил ответ, что у Apache нет корневого доступа к Picamera, и, следовательно, он не может получить к нему доступ.Я знаю, что Apache работает как пользователь группы www-данных, и я не знаю, на какую папку / файл мне следует дать разрешения, чтобы он мог получить доступ к PiCamera.Я не знаю, как это сделать. На локальном веб-сервере встроенной фляги все работает отлично, но при обслуживании через Apache камера не захватывает изображения.Пожалуйста, помогите мне.Вот мой основной код и конфигурации (имя приложения Flask VideoStream):
VideoStream.wsgi
#!/usr/bin/python3
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/VideoStream/")
from VideoStream import app as application
Файл конфигурации Apache:
<VirtualHost *:80>
ServerName 10.0.0.69
ServerAdmin realityreccode@gmail.com
WSGIScriptAlias / /var/www/VideoStream/VideoStream.wsgi
WSGIDaemonProcess VideoStream user=www-data group=www-data threads=5 home=/var/www/VideoStream/
<Directory /var/www/VideoStream/VideoStream/>
WSGIProcessGroup VideoStream
WSGIApplicationGroup %{GLOBAL}
WSGIScriptReloading On
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/VideoStream-error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/VideoStream-access.log combined
</VirtualHost>
Структура каталогов:
/var/www/VideoStream/
VideoStream.wsgi
VideoStream/
__init__.py
camera_pi.py
base_camera.py
templates/index.html
__ init__.py - Приложение для колб:
#!/usr/bin/python3
from importlib import import_module
import os
from flask import Flask, render_template, Response
from VideoStream.camera_pi 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='10.0.0.69', threaded=True, debug=True)