camera_node: workaround for storage logic for esp32-cam based cam

This commit is contained in:
Evgeny Zinoviev 2022-06-14 23:49:20 +03:00
parent 086a0960a3
commit e1d8a4eb86
4 changed files with 15 additions and 7 deletions

View File

@ -3,7 +3,7 @@ import asyncio
import time
from home.config import config
from home.media import MediaNodeServer, CameraRecordStorage, CameraRecorder
from home.media import MediaNodeServer, ESP32CameraRecordStorage, CameraRecorder
from home.camera import CameraType, esp32
from home.util import parse_addr, Addr
from home import http
@ -66,12 +66,11 @@ class ESP32CameraNodeServer(MediaNodeServer):
if __name__ == '__main__':
config.load('camera_node')
storage = CameraRecordStorage(config['node']['storage'])
recorder_kwargs = {}
camera_type = CameraType(config['camera']['type'])
if camera_type == CameraType.ESP32:
recorder_kwargs['stream_addr'] = parse_addr(config['camera']['web_addr']) # this is not a mistake, we don't use stream_addr for esp32-cam anymore
storage = ESP32CameraRecordStorage(config['node']['storage'])
else:
raise RuntimeError(f'unsupported camera type {camera_type}')

View File

@ -6,7 +6,7 @@ __map__ = {
'record_client': ['SoundRecordClient', 'CameraRecordClient', 'RecordClient'],
'node_server': ['MediaNodeServer'],
'node_client': ['SoundNodeClient', 'CameraNodeClient', 'MediaNodeClient'],
'storage': ['SoundRecordStorage', 'CameraRecordStorage', 'SoundRecordFile', 'CameraRecordFile', 'RecordFile'],
'storage': ['SoundRecordStorage', 'ESP32CameraRecordStorage', 'SoundRecordFile', 'CameraRecordFile', 'RecordFile'],
'record': ['SoundRecorder', 'CameraRecorder']
}

View File

@ -16,7 +16,7 @@ from .node_client import (
)
from .storage import (
SoundRecordStorage as SoundRecordStorage,
CameraRecordStorage as CameraRecordStorage,
ESP32CameraRecordStorage as ESP32CameraRecordStorage,
SoundRecordFile as SoundRecordFile,
CameraRecordFile as CameraRecordFile,
RecordFile as RecordFile

View File

@ -116,6 +116,13 @@ class RecordFile:
}
class PseudoRecordFile(RecordFile):
EXTENSION = 'null'
def __init__(self):
super().__init__('/pseudo/file')
class SoundRecordFile(RecordFile):
EXTENSION = 'mp3'
@ -192,6 +199,8 @@ class SoundRecordStorage(RecordStorage):
EXTENSION = 'mp3'
class CameraRecordStorage(RecordStorage):
EXTENSION = 'mp4'
class ESP32CameraRecordStorage(RecordStorage):
EXTENSION = 'jpg' # not used anyway
def save(self, *args, **kwargs):
return PseudoRecordFile()