The photos were easy. The videos nearly stopped the whole project.
A video of my daughter would back up to the NAS perfectly, and then, when I tried to play it in the browser, I’d get sound but no picture. Or a black rectangle. Or, for the big ones, an endless spinner while it buffered. The file was fine. It just wouldn’t play.
Two separate problems were hiding here, and it took me a while to see they were separate.
Problem 1: The Codec (H.265)
Modern Samsung phones record video in H.265, also called HEVC. It’s a newer, more efficient codec — smaller files for the same quality. Great for your phone’s storage.
The catch: browsers are picky about H.265. Depending on the browser and device, an H.265 video plays with sound but no image, or doesn’t play at all. My daughter’s videos were technically perfect and practically unwatchable in the app.
The old, boring codec — H.264 — plays everywhere. Every browser, every device, my mother’s tablet included. So the fix for problem one is: convert H.265 to H.264.
Problem 2: The Size (and My Home Upload Speed)
The second problem was bandwidth. Phone videos are big — a high-bitrate clip can be around 14 Mbps. On a phone that’s nothing, because the video is right there on the device.
But my videos stream from a NAS at my house, out through my home internet’s upload connection, to wherever my mother’s tablet is. Home upload speed is the bottleneck — it’s much slower than download. A 14 Mbps video trying to squeeze through a modest home upload pipe means buffering, every few seconds.
So even after fixing the codec, the big files still stuttered. The fix for problem two is: make the videos smaller.
One Conversion Fixes Both
ffmpeg — a free command-line tool — solves both at once. When a video is imported into the archive, I convert it to:
- H.264 so it plays in every browser.
- 720p resolution, which is plenty for a phone or tablet and cuts the size dramatically.
- A “faststart” flag so playback can begin before the whole file downloads.
The quality knob I settled on is a middle setting (CRF 23, if you know ffmpeg) — good enough that I can’t tell the difference on a tablet, small enough that it streams with no spinner. In practice the videos drop from around 14 Mbps to about 2–3 Mbps, roughly 85% smaller, and the playback delay went from “constant buffering” to “starts right away.”
Two honest points:
- It’s a real trade. The 720p H.264 copy is lower quality than the H.265 original. I’m fine with that for streaming, because the originals stay safely backed up. The archive holds the smooth, watchable version; the backup holds the pristine one.
- It costs time, not money. ffmpeg runs locally on my own machine. There’s no per-video fee, no cloud transcoding bill — just some CPU and a short wait. In dollars, this stage is $0.
Why This Is Worth a Whole Post
Because “it backed up, so it’s fine” is a trap, and video is where it bites you. A backup proves the bytes are safe. It says nothing about whether the file will play on the device your family actually uses.
If your growth archive is mostly video — and a toddler’s archive is — the format matters as much as the backup. Store the originals safely, but serve a copy that plays everywhere and streams over a home connection. One ffmpeg command, run once at import, and the black rectangles and spinners are gone.
Next: the single button that runs this conversion and files each video into the right month.