diff options
| author | Adam Soltys <[email protected]> | 2026-10-09 13:53:56 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-10-09 13:53:56 -0700 |
| commit | f264cf4679d58d965215bd0081a77cdaccc803f0 (patch) | |
| tree | a9f38edbd77ecc7004cb3823bd2dd9c0d00c0b24 /src/features/messages.js | |
| parent | 2454b9a4c12ad1ae403a20b2793b4c03b1164651 (diff) | |
| download | coinosv3-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.js | 3 |
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) |
