Root causes found: 1. Scheduler crashing every 15s: assets table has no error_message column. Fix: remove error_message from UPDATE in scheduler.js (#66 regression). 2. Clip freezing: client-side filmstrip seek loop runs on main thread, seeks same proxy the player is streaming → both stall → freeze. Fix: replace browser seek loop entirely with server-side FFmpeg worker. 3. No dedicated filmstrip worker: filmstrip was never pre-built server-side. Changes: - services/mam-api/src/db/migrations/018-add-filmstrip-s3-key.sql Add filmstrip_s3_key TEXT column to assets table - services/worker/src/workers/filmstrip.js (new) BullMQ worker: downloads proxy, runs FFmpeg fps filter to extract 28 evenly-spaced JPEG frames, base64-encodes them, uploads JSON array to S3 at filmstrips/<assetId>.json, stores key in DB - services/worker/src/workers/thumbnail.js Queue filmstrip job automatically after thumbnail completes - services/worker/src/index.js Register filmstrip worker (concurrency=2), export filmstripQueue singleton, close it on SIGTERM - services/mam-api/src/routes/assets.js - filmstripQueue added - POST /reprocess?type=filmstrip now supported - GET /:id/filmstrip returns signed S3 URL for JSON frames - services/mam-api/src/routes/jobs.js filmstrip queue visible in Jobs UI - services/web-ui/public/screens-asset.jsx Replace browser seek loop with fetch of /assets/:id/filmstrip → fetch S3 JSON → render frames. Zero browser-side video seeking. Right-click and Files tab re-generate via API endpoint.
58 lines
1.8 KiB
XML
58 lines
1.8 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<ExtensionManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
ExtensionBundleId="net.wilddragon.dragonflight.panel"
|
|
ExtensionBundleName="Wild Dragon MAM"
|
|
ExtensionBundleVersion="1.1.0"
|
|
Version="7.0">
|
|
<ExtensionList>
|
|
<Extension Id="net.wilddragon.dragonflight.panel" Version="1.0" />
|
|
</ExtensionList>
|
|
<ExecutionEnvironment>
|
|
<HostList>
|
|
<Host Name="PPRO" Version="[22.0,99.9]" />
|
|
</HostList>
|
|
<LocaleList>
|
|
<Locale Code="All" />
|
|
</LocaleList>
|
|
<RequiredRuntimeList>
|
|
<RequiredRuntime Name="CSXS" Version="10.0" />
|
|
</RequiredRuntimeList>
|
|
</ExecutionEnvironment>
|
|
<DispatchInfoList>
|
|
<Extension Id="net.wilddragon.dragonflight.panel">
|
|
<DispatchInfo>
|
|
<Resources>
|
|
<MainPath>./index.html</MainPath>
|
|
<ScriptPath>./jsx/premiere.jsx</ScriptPath>
|
|
<CEFCommandLine>
|
|
<Parameter>--enable-nodejs</Parameter>
|
|
<Parameter>--mixed-context</Parameter>
|
|
<Parameter>--allow-file-access-from-files</Parameter>
|
|
<Parameter>--allow-file-access</Parameter>
|
|
</CEFCommandLine>
|
|
</Resources>
|
|
<Lifecycle>
|
|
<AutoVisible>true</AutoVisible>
|
|
</Lifecycle>
|
|
<UI>
|
|
<Type>Panel</Type>
|
|
<Menu>Wild Dragon MAM</Menu>
|
|
<Geometry>
|
|
<Size>
|
|
<Height>700</Height>
|
|
<Width>400</Width>
|
|
</Size>
|
|
<MinSize>
|
|
<Height>500</Height>
|
|
<Width>385</Width>
|
|
</MinSize>
|
|
<MaxSize>
|
|
<Height>2000</Height>
|
|
<Width>800</Width>
|
|
</MaxSize>
|
|
</Geometry>
|
|
</UI>
|
|
</DispatchInfo>
|
|
</Extension>
|
|
</DispatchInfoList>
|
|
</ExtensionManifest>
|