aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/messages.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-09 13:53:56 -0700
committerAdam Soltys <[email protected]>2026-10-09 13:53:56 -0700
commitf264cf4679d58d965215bd0081a77cdaccc803f0 (patch)
treea9f38edbd77ecc7004cb3823bd2dd9c0d00c0b24 /src/features/messages.js
parent2454b9a4c12ad1ae403a20b2793b4c03b1164651 (diff)
downloadcoinosv3-f264cf4679d58d965215bd0081a77cdaccc803f0.tar.gz
coinosv3-f264cf4679d58d965215bd0081a77cdaccc803f0.zip
Video stills: past a black opening. vmedia took its still at half a second, and a clip that fades in from black (7 of the 68 made in three hours) gave a black tile. Each frame's mean brightness now comes out of ffmpeg (signalstats YAVG on pipe:2 — /dev/stderr can't be opened from a Bun-spawned pipe), and a dark one sends it further in (2, 5, 10, 20, 40 s) for the first bright frame; a clip dark all the way through (a night scene, a boot screen) gets its brightest frame with the levels stretched (normalize). Stills are made again under a new key and URL (v=4), so neither the server's nor the CDN's black copies are served.
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Vps2H27rhbG9ZqseGfMrc3
Diffstat (limited to 'src/features/messages.js')
-rw-r--r--src/features/messages.js3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/features/messages.js b/src/features/messages.js
index ed4136a..6245c60 100644
--- a/src/features/messages.js
+++ b/src/features/messages.js
@@ -7178,7 +7178,8 @@ export function messagesFeature(ctx) {
// for Linux plays its sound over black.
const VMEDIA = APP_BASE + '/vmedia/';
const vmediaOk = (url) => /^https:\/\//i.test(url || '');
- const serverThumb = (url) => (vmediaOk(url) ? VMEDIA + 'thumb.jpg?u=' + encodeURIComponent(url) : undefined);
+ // v=4: stills past a dark opening frame (a new URL, so the CDN's old black ones aren't served)
+ const serverThumb = (url) => (vmediaOk(url) ? VMEDIA + 'thumb.jpg?v=4&u=' + encodeURIComponent(url) : undefined);
const h264Of = (url) => VMEDIA + 'h264.mp4?u=' + encodeURIComponent(url);
const noPicture = new Set(), h264Failed = new Set();
const serverThumbFailed = new Set(); // clips vmedia had no picture for (this session)