Skip to content

Latest 🗞️

Monday, July 13

Git Commits

dev commits 5 ohnsh/dev
  • 11:01 pm — John Sherrell <dev@ohn.sh>

    cam: add continuous monitoring to stream_folder.sh

  • 9:02 pm — John Sherrell <dev@ohn.sh>

    cam: Added timezone awareness to mediamtx container (tzdata package and TZ environment variable). Added logic to only pre-resolve .local hostnames and only include --add-hosts on the docker command line when necessary. Added stream key redaction (from ffmpeg logs) to stream_folder.sh.

  • 4:52 pm — John Sherrell <dev@ohn.sh>

    stream-utils: Minor clean-up in shell scripts.

  • 4:40 pm — John Sherrell <dev@ohn.sh>

    cam: In relay.sh, change default source from camera to MediaMTX proxy. New script stream_folder.sh, similar to the one in stream-utils but a much cleaner implementation. It takes an input directory (must exist) and an output directory. Each mp4 file in input is streamed to YouTube's RTMP endpoint and then moved to output when finished. Files are streamed one-by-one in glob (lexicographic) order, which also happens to be chronological order for `%Y%m%d_%H%M%S`-formatted filenames.

  • 4:31 pm — John Sherrell <dev@ohn.sh>

    cam: Configure MediaMTX to record wuuk path to fMP4 files, and drop `runOnDemand` option. This moves recording into the same process doing the proxying instead of requiring a separate always-running ffmpeg.

YouTube

Sunday, July 12

Git Commits

dev commits 5 ohnsh/dev
  • 8:39 pm — John Sherrell <dev@ohn.sh>

    cam: shell script to relay RTSP stream from Thingino camera or MediaMTX proxy to YouTube.

  • 8:16 pm — John Sherrell <dev@ohn.sh>

    cam: Added package.json to cam package with `youtube-client` as a dependency. Also updated stream-utils package.json with new youtube-client subcommands.

  • 8:13 pm — John Sherrell <dev@ohn.sh>

    youtube-client: Change name of `ensure` command to `prepare`. Add option to prune obsolete broadcasts when preparing (default true).

  • 7:59 pm — John Sherrell <dev@ohn.sh>

    youtube-client: Added command-line parsing so that title and description can be passed for subcommands that create a broadcast.

  • 5:37 pm — John Sherrell <dev@ohn.sh>

    cam: new project overlapping stream-utils. Proxying Thingino RTSP stream with MediaMTX. This will run as a docker container on a Raspberry Pi for now.

Saturday, July 11

Git Commits

dev commits 3 ohnsh/dev
  • 12:49 pm — John Sherrell <dev@ohn.sh>

    sh: brought in changes to wyze-timelapse.sh that have been in production on an Intel-based Alpine server. Need to add (optional) strobe effect, which here will be a genuinely low framerate, likely bringing major savings to both processing time and file size.

  • 5:34 am — John Sherrell <dev@ohn.sh>

    bug: Documentation. Only pass `--add-host` when we actually have an mdns name to pre-resolve.

  • 2:05 am — John Sherrell <dev@ohn.sh>

    bug: get timezone working inside container, clean up ffmpeg command line duplication, use wallclock for timestamps in hopes of stabilizing the output files a bit.

itsa-me commits 1 ohnsh/itsa-me
  • 11:19 am — John Sherrell <dev@ohn.sh>

    Upgraded Astro, bumped dependencies, updated profile pic.

Friday, July 10

Git Commits

dev commits 4 ohnsh/dev
  • 8:03 am — John Sherrell <dev@ohn.sh>

    youtube-client: added logic to prune broadcasts in 'ready' state that aren't configured correctly. A common example would be broadcasts with outdated titles that were created by the Studio web interface. Since these would be automatically used by a future stream, the idea is to simply delete them and create a new ready broadcast.

  • 6:25 am — John Sherrell <dev@ohn.sh>

    bug: Added libopus encoder option. Since the files will be mostly silence and speech, 64k is a more reasonable bitrate. Opus apparently excels at low bitrates.

  • 1:39 am — John Sherrell <dev@ohn.sh>

    bug: now working as a dockerized service on alpine, recording from a pulseaudio server (`ffmpeg -f pulse`) via the network.

  • 12:12 am — John Sherrell <dev@ohn.sh>

    bug: Converting to a remote container that records a pulseaudio server over the network.

Wednesday, July 8

Git Commits

dev commits 3 ohnsh/dev
  • 1:00 pm — John Sherrell <dev@ohn.sh>

    stream-utils: relay for routing thingino stream to YouTube.

  • 10:42 am — John Sherrell <dev@ohn.sh>

    stream-utils: mkff.sh: new function to create summary videos from a sequence of input videos.

  • 1:00 am — John Sherrell <dev@ohn.sh>

    bug: switched to sox_ng for recording because `ffmpeg -f avfoundation` produced poor output with crackling artifacts (apparently others have the same issue). Currently handling process management by running inside tmux, which is incompatible with launchd (as far as I can tell). For now, `tmux-bug.sh` is installed as a login item, but I may remove tmux from the equation and convert it to a standard launchd service.

Monday, July 6

Git Commits

dev commits 5 ohnsh/dev
  • 9:11 pm — John Sherrell <dev@ohn.sh>

    bug: tweaking ffmpeg parameters to eliminate crackling artifact. Seems a little better when matching the hardware sample rate (48 kHz as reported by 'Audio MIDI Setup.app'). I still suspect I could get much better output with the right options.

  • 8:11 pm — John Sherrell <dev@ohn.sh>

    stream-utils: fixed a couple of minor bugs in mkmanifest.

  • 8:10 pm — John Sherrell <dev@ohn.sh>

    bug: renamed from soundstage. Saving files to a sane location.

  • 4:30 pm — John Sherrell <dev@ohn.sh>

    stream-utils: organizing a bit. About to split off a separate branch to hold all the scratch material (generally scripts that I didn't write but might use as a starting place for new features.)

  • 4:25 pm — John Sherrell <dev@ohn.sh>

    soundstage: initialize project. Using `ffmpeg -f avfoundation`, parsing `-list_devices` output to find index number of Samson mic.

YouTube