Latest Posts
- Notes 6/11
- iCloud Shared Album 4/7
- Firebase Quotas and Cloudflare Workers 3/20
- j.ohn.sh back in business. 3/16
- Posts are back. 3/13
5:42 pm — John Sherrell <dev@ohn.sh>
stream-utils: Since paths in ffmpeg concat demuxer playlists are relative to the playlist file, I'm starting to prefer generating temp files in the current directory instead of using process substitution (which makes paths relative to /dev/fd). Added a new function in mkff.sh to that effect and changed most of the script to use it.
5:15 pm — John Sherrell <dev@ohn.sh>
stream-utils: Some old work I forgot about. strobe_multi function that takes a playlist input.
11:52 pm — John Sherrell <dev@ohn.sh>
sh: fix script dir detection when wyze_timelapse.sh is being sourced (${BASH_SOURCE[0]} instead of $0). In timelapse.sh, use `-qp 28` for timelapse_vaapi variant, for slightly smaller output (default `qp` is 25).
10:21 pm — John Sherrell <dev@ohn.sh>
cam: Convert container management to use compose.yml.
10:15 pm — John Sherrell <dev@ohn.sh>
cam: For now, quit stream_folder.sh when we run out of files. If I restart the stream after a delay, the broadcast is already over and YouTube just throws the stream away. A new broadcast could be created programatically with `youtube-client`, which is what stream_folder.sh already does on start-up, but I'm reluctant to put that in a loop and leave it on autopilot.
9:53 pm — John Sherrell <dev@ohn.sh>
bug: Now starting container with docker compose.
5:31 am — John Sherrell <dev@ohn.sh>
cam: Yikes, forgot the shebang in cam.sh. It ran, but not in a way that I could find with pgrep. It's definitely not a POSIX script.
2:34 am — John Sherrell <dev@ohn.sh>
cam: Removed redact_tty wrapper around ffmpeg in stream_folder.sh. It's a fun idea but the `script`-based implementation introduces unnecessary complexity around signals and controlling terminals. Also added documentation and a guard to disable writes to the status FIFO when there's no reader, preventing hangs.
10:15 pm — John Sherrell <dev@ohn.sh>
cam: Document correct usage of monitor.sh: The status FIFO must be open for read/write (<>$STATUS_FIFO).
10:05 pm — John Sherrell <dev@ohn.sh>
cam: Status updates via named pipe and new monitor.sh, which reads from the pipe and logs to both stderr and ntfy.sh.
8:29 pm — John Sherrell <dev@ohn.sh>
bug: New helper script to separate old recordings not open for writing so that they can be archived.
8:18 pm — John Sherrell <dev@ohn.sh>
sh: In wyze_timelapse.sh, save ffmpeg concat playlist to temporary file in working directory to enable relative file paths. (Process substitution is more elegant but not worth the hassle here because it causes ffmpeg to interpret paths as relative to /dev/fd.)
8:00 pm — John Sherrell <dev@ohn.sh>
sh: Refactored wyze_timelapse.sh, split generic timelapse functions into separate library script timelapse.sh. Added default strobe effect (2 fps). Update to dxif.sh bringing compatibility with aac, opus, and ogg files.
5:01 pm — John Sherrell <dev@ohn.sh>
cam: Refactored relay.sh and record.sh, replacing both with cam.sh. Implemented audio delay when combining Thingino video with external (Pulseaudio) audio, resulting in roughly synchronized audio/video. (Delay implemented both in cam.sh and mediamtx.yml.) Lots of duplicate code removed and lots more edge cases now handled gracefully.
10:33 am — John Sherrell <dev@ohn.sh>
cam: Recording functions moved to new file, record.sh. In mediamtx.yml, publish combined ("patched") streams with video from camera/Thingino and audio from macOS Pulseaudio server. Set PULSEAUDIO_SERVER in environment when creating Docker container.