Resource videos #23

Closed
opened 2026-07-14 16:45:21 +00:00 by eliza · 9 comments
eliza commented 2026-07-14 16:45:21 +00:00 (Migrated from gitea.sigd.net)

The resource videos (vlogs) are not playing when hit play

The resource videos (vlogs) are not playing when hit play
friday-bot commented 2026-07-14 16:48:15 +00:00 (Migrated from gitea.sigd.net)

Investigation Results

I found two issues:

Root cause: Missing video files

The production server has an empty video directory — /docker/websites/deafgain/video_content/ contains no .mp4 files. The nginx config mounts this directory into the container at /usr/share/nginx/html/videos/, so all video paths (e.g. /videos/governance-documents.mp4) return 404.

Secondary bug: Silent play() failure in VideoPlayer

VideoPlayer.tsx calls videoRef.current.play() without handling the returned Promise. When a video fails to load, the error is silently swallowed and the player shows no feedback to the user — just a frozen frame and an unresponsive play button.


Plan

Part A — Code fix (VideoPlayer.tsx)

Wrap play() in a try/catch to handle failures gracefully and show a visible error state:

  • Add an error state to the component
  • Await play() inside an async callback; catch rejections
  • If play fails, show a user-visible message (e.g. "Video unavailable — please try again later") instead of silently doing nothing
  • Reset isPlaying to false on failure

Part B — Infrastructure action required (not a code change)

The .mp4 video files need to be manually uploaded to /docker/websites/deafgain/video_content/ on the production server (10.4.0.205). The expected filenames (based on Resources.tsx) are:

  • governance-documents.mp4
  • secretary-role-responsibilities.mp4
  • minutes-approval-procedure.mp4
  • board-participation-guidelines.mp4
  • board-member-reprimands.mp4
  • meeting-minutes-access-rights.mp4

I can implement Part A immediately (code fix + deploy). Part B requires someone with access to the video files to upload them to the server.

Please reply to approve the code fix, and separately arrange for the video files to be placed on the server.

## Investigation Results I found two issues: ### Root cause: Missing video files The production server has an empty video directory — `/docker/websites/deafgain/video_content/` contains no `.mp4` files. The nginx config mounts this directory into the container at `/usr/share/nginx/html/videos/`, so all video paths (e.g. `/videos/governance-documents.mp4`) return 404. ### Secondary bug: Silent play() failure in VideoPlayer `VideoPlayer.tsx` calls `videoRef.current.play()` without handling the returned Promise. When a video fails to load, the error is silently swallowed and the player shows no feedback to the user — just a frozen frame and an unresponsive play button. --- ## Plan **Part A — Code fix (VideoPlayer.tsx)** Wrap `play()` in a try/catch to handle failures gracefully and show a visible error state: - Add an `error` state to the component - Await `play()` inside an async callback; catch rejections - If play fails, show a user-visible message (e.g. "Video unavailable — please try again later") instead of silently doing nothing - Reset `isPlaying` to `false` on failure **Part B — Infrastructure action required (not a code change)** The `.mp4` video files need to be manually uploaded to `/docker/websites/deafgain/video_content/` on the production server (`10.4.0.205`). The expected filenames (based on `Resources.tsx`) are: - `governance-documents.mp4` - `secretary-role-responsibilities.mp4` - `minutes-approval-procedure.mp4` - `board-participation-guidelines.mp4` - `board-member-reprimands.mp4` - `meeting-minutes-access-rights.mp4` I can implement Part A immediately (code fix + deploy). Part B requires someone with access to the video files to upload them to the server. Please reply to approve the code fix, and separately arrange for the video files to be placed on the server.
eliza commented 2026-07-14 17:09:25 +00:00 (Migrated from gitea.sigd.net)

approve

approve
eliza commented 2026-07-14 17:11:34 +00:00 (Migrated from gitea.sigd.net)

still not working

still not working
friday-bot commented 2026-07-14 17:14:30 +00:00 (Migrated from gitea.sigd.net)

Done

Part A (code fix) — deployed at commit d3cb7795b7e654a2862f934b3877e3439deaab59

Fixed VideoPlayer.tsx to handle the play() Promise rejection gracefully:

  • Added playError state
  • Made togglePlay async and awaits videoRef.current.play()
  • On failure, shows a visible error overlay: "Video unavailable — please try again later."
  • Resets isPlaying to false on failure

Site is up and responding.

Part B (video files) — action still needed

The .mp4 files are still missing from /docker/websites/deafgain/video_content/ on the production server. Someone with access to the original video files needs to upload them there. Expected filenames:

  • governance-documents.mp4
  • secretary-role-responsibilities.mp4
  • minutes-approval-procedure.mp4
  • board-participation-guidelines.mp4
  • board-member-reprimands.mp4
  • meeting-minutes-access-rights.mp4

Once the files are uploaded the videos will play. Until then, users will see the "Video unavailable" message instead of a frozen/unresponsive player.

## Done **Part A (code fix) — deployed at commit `d3cb7795b7e654a2862f934b3877e3439deaab59`** Fixed `VideoPlayer.tsx` to handle the `play()` Promise rejection gracefully: - Added `playError` state - Made `togglePlay` async and `await`s `videoRef.current.play()` - On failure, shows a visible error overlay: "Video unavailable — please try again later." - Resets `isPlaying` to `false` on failure Site is up and responding. **Part B (video files) — action still needed** The `.mp4` files are still missing from `/docker/websites/deafgain/video_content/` on the production server. Someone with access to the original video files needs to upload them there. Expected filenames: - `governance-documents.mp4` - `secretary-role-responsibilities.mp4` - `minutes-approval-procedure.mp4` - `board-participation-guidelines.mp4` - `board-member-reprimands.mp4` - `meeting-minutes-access-rights.mp4` Once the files are uploaded the videos will play. Until then, users will see the "Video unavailable" message instead of a frozen/unresponsive player.
eliza commented 2026-07-14 17:15:49 +00:00 (Migrated from gitea.sigd.net)

the videos are still not playing

the videos are still not playing
friday-bot commented 2026-07-14 17:16:02 +00:00 (Migrated from gitea.sigd.net)

Status update

When you said "still not working" at 17:11, the code fix had been committed but the container had not yet been rebuilt — it was still running a 7-week-old image. I have now rebuilt and redeployed:

  • Deployed commit: d3cb779 — Handle video play() promise rejection with visible error state
  • Site health check: HTTP 200 ✓

What the fix does

The VideoPlayer now catches play() failures and shows a visible red banner: "Video unavailable — please try again later." Previously the player silently froze with no feedback.


Why videos are still not playing

The fix does not make the videos play — it only improves the error message. The underlying cause remains: the video files do not exist on the server.

The directory /docker/websites/deafgain/video_content/ on 10.4.0.205 is empty (0 files). Nginx mounts this directory into the container at /videos/, so every video URL returns a 404.

The following .mp4 files need to be manually uploaded to /docker/websites/deafgain/video_content/:

  • governance-documents.mp4
  • secretary-role-responsibilities.mp4
  • minutes-approval-procedure.mp4
  • board-participation-guidelines.mp4
  • board-member-reprimands.mp4
  • meeting-minutes-access-rights.mp4

Once those files are in place, the videos will play without any further code changes. Please arrange for someone with access to the video files to upload them to the server.

Leaving this issue open until the video files are uploaded.

## Status update When you said "still not working" at 17:11, the code fix had been committed but the container had **not yet been rebuilt** — it was still running a 7-week-old image. I have now rebuilt and redeployed: - **Deployed commit:** `d3cb779` — Handle video play() promise rejection with visible error state - **Site health check:** HTTP 200 ✓ ### What the fix does The VideoPlayer now catches `play()` failures and shows a visible red banner: **"Video unavailable — please try again later."** Previously the player silently froze with no feedback. --- ### Why videos are still not playing The fix does **not** make the videos play — it only improves the error message. The underlying cause remains: **the video files do not exist on the server.** The directory `/docker/websites/deafgain/video_content/` on `10.4.0.205` is empty (0 files). Nginx mounts this directory into the container at `/videos/`, so every video URL returns a 404. The following `.mp4` files need to be manually uploaded to `/docker/websites/deafgain/video_content/`: - `governance-documents.mp4` - `secretary-role-responsibilities.mp4` - `minutes-approval-procedure.mp4` - `board-participation-guidelines.mp4` - `board-member-reprimands.mp4` - `meeting-minutes-access-rights.mp4` Once those files are in place, the videos will play without any further code changes. Please arrange for someone with access to the video files to upload them to the server. Leaving this issue open until the video files are uploaded.
friday-bot commented 2026-07-14 17:17:27 +00:00 (Migrated from gitea.sigd.net)

Deployed ✓

The code fix (Part A) is now live at commit d3cb779.

What changed: VideoPlayer now catches failed play() calls and shows a visible error message — "Video unavailable — please try again later" — instead of silently freezing.

Why it's still not working: The video files themselves are missing from the server. The directory /docker/websites/deafgain/video_content/ on 10.4.0.205 is empty. When a video is missing, you'll now see the error message instead of a frozen player, but the videos won't play until the files are uploaded.

Action needed (Part B): Please upload the following .mp4 files to /docker/websites/deafgain/video_content/ on the production server:

  • governance-documents.mp4
  • secretary-role-responsibilities.mp4
  • minutes-approval-procedure.mp4
  • board-participation-guidelines.mp4
  • board-member-reprimands.mp4
  • meeting-minutes-access-rights.mp4

Once the files are in place, the videos will play immediately — no rebuild needed (the directory is mounted into the container).

## Deployed ✓ The code fix (Part A) is now live at commit `d3cb779`. **What changed:** VideoPlayer now catches failed `play()` calls and shows a visible error message — "Video unavailable — please try again later" — instead of silently freezing. **Why it's still not working:** The video files themselves are missing from the server. The directory `/docker/websites/deafgain/video_content/` on 10.4.0.205 is empty. When a video is missing, you'll now see the error message instead of a frozen player, but the videos won't play until the files are uploaded. **Action needed (Part B):** Please upload the following `.mp4` files to `/docker/websites/deafgain/video_content/` on the production server: - `governance-documents.mp4` - `secretary-role-responsibilities.mp4` - `minutes-approval-procedure.mp4` - `board-participation-guidelines.mp4` - `board-member-reprimands.mp4` - `meeting-minutes-access-rights.mp4` Once the files are in place, the videos will play immediately — no rebuild needed (the directory is mounted into the container).
eliza commented 2026-07-14 17:22:23 +00:00 (Migrated from gitea.sigd.net)

Seems like the videos are missing. Look for them. Make sure they are in that directory where they are supposed to be.

Seems like the videos are missing. Look for them. Make sure they are in that directory where they are supposed to be.
friday-bot commented 2026-07-14 17:23:40 +00:00 (Migrated from gitea.sigd.net)

Search Results — Video Files Not Found

I've searched the entire production server (10.4.0.205) for .mp4 files. Here's what I found:

No deafgain video files exist anywhere on the server.

I checked:

  • /docker/websites/deafgain/video_content/ — empty (the directory exists but contains no files)
  • /home/chaulmark/websites/deafgain.org/public/videos/ — contains only a .gitkeep placeholder
  • ✗ Entire filesystem scan — zero .mp4 files associated with deafgain

The video files were never uploaded to this server. They need to come from an external source — wherever the original recordings are stored (a laptop, Google Drive, Dropbox, USB drive, etc.).

What needs to happen

Someone with access to the original video recordings needs to upload the following files to /docker/websites/deafgain/video_content/ on the production server:

  • governance-documents.mp4
  • secretary-role-responsibilities.mp4
  • minutes-approval-procedure.mp4
  • board-participation-guidelines.mp4
  • board-member-reprimands.mp4
  • meeting-minutes-access-rights.mp4

The easiest way to upload them is via SCP:

No rebuild is needed — the directory is a live volume mount into the container, so videos will be accessible immediately after upload.

## Search Results — Video Files Not Found I've searched the entire production server (10.4.0.205) for .mp4 files. Here's what I found: **No deafgain video files exist anywhere on the server.** I checked: - ✗ `/docker/websites/deafgain/video_content/` — empty (the directory exists but contains no files) - ✗ `/home/chaulmark/websites/deafgain.org/public/videos/` — contains only a `.gitkeep` placeholder - ✗ Entire filesystem scan — zero `.mp4` files associated with deafgain The video files were never uploaded to this server. They need to come from an external source — wherever the original recordings are stored (a laptop, Google Drive, Dropbox, USB drive, etc.). ### What needs to happen Someone with access to the original video recordings needs to upload the following files to `/docker/websites/deafgain/video_content/` on the production server: - `governance-documents.mp4` - `secretary-role-responsibilities.mp4` - `minutes-approval-procedure.mp4` - `board-participation-guidelines.mp4` - `board-member-reprimands.mp4` - `meeting-minutes-access-rights.mp4` The easiest way to upload them is via SCP: No rebuild is needed — the directory is a live volume mount into the container, so videos will be accessible immediately after upload.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: chaulmark/deafgain-website#23
No description provided.