switch to mpegts format for cache and create mp4 with faststart

This commit is contained in:
Blake Blackshear
2021-10-15 21:08:43 -05:00
parent ef82c5c691
commit c809494c98
2 changed files with 27 additions and 8 deletions

View File

@@ -48,9 +48,7 @@ class RecordingMaintainer(threading.Thread):
recordings = [
d
for d in os.listdir(CACHE_DIR)
if os.path.isfile(os.path.join(CACHE_DIR, d))
and d.endswith(".mp4")
and not d.startswith("clip_")
if os.path.isfile(os.path.join(CACHE_DIR, d)) and d.endswith(".ts")
]
files_in_use = []
@@ -113,9 +111,30 @@ class RecordingMaintainer(threading.Thread):
file_name = f"{start_time.strftime('%M.%S.mp4')}"
file_path = os.path.join(directory, file_name)
# copy then delete is required when recordings are stored on some network drives
shutil.copyfile(cache_path, file_path)
os.remove(cache_path)
ffmpeg_cmd = [
"ffmpeg",
"-y",
"-i",
cache_path,
"-c",
"copy",
"-movflags",
"+faststart",
file_path,
]
p = sp.run(
ffmpeg_cmd,
encoding="ascii",
capture_output=True,
)
Path(cache_path).unlink(missing_ok=True)
if p.returncode != 0:
logger.error(f"Unable to convert {cache_path} to {file_path}")
logger.error(p.stderr)
continue
rand_id = "".join(
random.choices(string.ascii_lowercase + string.digits, k=6)