Browse Source

fixes

master
gsd 7 months ago
parent
commit
eeb1af4fbd
  1. 27
      backend/config_parser.py
  2. 12
      frontend/ang_dvrip/src/app/components/history/history.component.html

27
backend/config_parser.py

@ -150,7 +150,8 @@ class TranscodeTools:
statuses:dict[str, TranscodeStatus] = {}
WIN32PYTHON = "python-win32"
def __init__(self, tools_directory, transcode_directory, hide_checks = True) -> None:
def __init__(self, tools_directory, transcode_directory, hide_checks = True, delete_temporary_files = False) -> None:
self.delete_temporary_files = delete_temporary_files
self.logger = create_logger(TranscodeTools.__name__)
self.hide_checks = hide_checks
self.tools_directory = tools_directory
@ -258,7 +259,7 @@ class TranscodeTools:
async def anytoimage(self, source_file, out_file, delete_source_file = False):
exec_string = ["-y", "-i", source_file, "-ss", "1", "-vframes", "1", out_file]
self.logger.debug(f"execute {exec_string}")
proc = await asyncio.create_subprocess_exec("ffmpeg", *exec_string, stderr=DEVNULL)
proc = await asyncio.create_subprocess_exec("ffmpeg", *exec_string)
await proc.communicate()
if delete_source_file:
@ -274,23 +275,25 @@ class TranscodeTools:
except:
pass
async def processing_preview(self, file:File, nvr: NVR, ext = "webp"):
async def processing_preview(self, file:File, nvr: NVR, ext = "webp", preview_pre_bytes = 1024 * 512):
raw_file = file.previewPath(self.transcode_directory)
preview_file = f"{raw_file}.{ext}"
if os.path.exists(preview_file) and os.path.getsize(preview_file) != 0:
self.logger.info(f"{preview_file} is exists")
return preview_file
if nvr is None:
raise NeedNVR
if not os.path.exists(raw_file) or os.path.getsize(raw_file) != 0:
if not os.path.exists(raw_file) or os.path.getsize(raw_file) == 0:
self.logger.info(f"download new preview {preview_file}")
async with aiofiles.open(raw_file, "wb") as raw:
async for chunk in nvr.stream_file(file, 1024 * 512):
async for chunk in nvr.stream_file(file, preview_pre_bytes):
await raw.write(chunk)
nvr.logout()
return await self.anytoimage(raw_file, preview_file, True)
raw_file = await self.h264toavi(raw_file)
return await self.anytoimage(raw_file, preview_file, False)
async def processing_safe(self, status: TranscodeStatus, file:File, nvr: NVR, reCreate:bool = False):
try:
@ -328,7 +331,7 @@ class TranscodeTools:
self.statuses[status.b64].avi = 0
avi_file = raw_file + ".avi"
if not os.path.exists(avi_file) or reCreate:
avi_file = await self.h264toavi(raw_file)
avi_file = await self.h264toavi(raw_file, self.delete_temporary_files)
else:
self.logger.debug("file avi format already exitst")
self.statuses[status.b64].avi = 100
@ -337,7 +340,7 @@ class TranscodeTools:
self.statuses[status.b64].mp4 = 0
mp4_file = avi_file + ".mp4"
if not os.path.exists(mp4_file) or reCreate:
mp4_file = await self.avitomp4(avi_file, True)
mp4_file = await self.avitomp4(avi_file, self.delete_temporary_files)
else:
self.logger.debug("file mp4 format already exists")
self.statuses[status.b64].mp4 = 100
@ -372,7 +375,7 @@ class Config:
else:
for recorder in self.recorders:
self.logger.info(recorder)
self.transcode_tools:TranscodeTools = self.check_transcode_tools(not args.no_hide_check if args != None else True)
self.transcode_tools:TranscodeTools = self.check_transcode_tools(not args.no_hide_check if args != None else True, raw.get("delete_temporary_files", False))
def getRecorder(self, index = 0) -> Recorder:
return self.recorders[index]
@ -386,9 +389,9 @@ class Config:
os.mkdir(t_dir)
return t_dir
def check_transcode_tools(self, hide_check):
def check_transcode_tools(self, hide_check, delete_temporary_files):
tools_dir = os.path.join(app_dir(), "MiskaRisa264")
return TranscodeTools(tools_dir, self.check_transcode_directory(), hide_check)
return TranscodeTools(tools_dir, self.check_transcode_directory(), hide_check, delete_temporary_files)
if __name__ == "__main__":
import argparse

12
frontend/ang_dvrip/src/app/components/history/history.component.html

@ -1,24 +1,24 @@
<ng-container>
<div style="text-align: center">
<mat-form-field>
<div style="text-align: center; padding-top: 1%; padding-bottom: 1%">
<mat-form-field style="padding-right: 1%; padding-left: 1%">
<mat-label>Выбранный поток</mat-label>
<mat-select [(value)]="selected_stream" (valueChange)="getHistory()">
<mat-option [value]="0">Основной</mat-option>
<mat-option [value]="1">Дополнительный</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<mat-form-field style="padding-right: 1%; padding-left: 1%">
<mat-label>Choose a date</mat-label>
<input matInput [matDatepicker]="picker_start" [ngModel]="start_date" (dateChange)="setDate($event, 'start')">
<mat-hint>MM/DD/YYYY</mat-hint>
<mat-datepicker-toggle matIconSuffix [for]="picker_start"></mat-datepicker-toggle>
<mat-datepicker-toggle matSuffix [for]="picker_start"></mat-datepicker-toggle>
<mat-datepicker #picker_start></mat-datepicker>
</mat-form-field>
<mat-form-field>
<mat-form-field style="padding-right: 1%; padding-left: 1%">
<mat-label>Choose a date</mat-label>
<input matInput [matDatepicker]="picker_end" [ngModel]="end_date" (dateChange)="setDate($event, 'end')">
<mat-hint>MM/DD/YYYY</mat-hint>
<mat-datepicker-toggle matIconSuffix [for]="picker_end"></mat-datepicker-toggle>
<mat-datepicker-toggle matSuffix [for]="picker_end"></mat-datepicker-toggle>
<mat-datepicker #picker_end></mat-datepicker>
</mat-form-field>
</div>

Loading…
Cancel
Save