Stream-Observer (strobs)

Stream-Observer (strobs)
Stream-Observer (strobs) is a tool to observe running voc video streams.

The script opens mpv with all active (currently streaming) streams from [Chaos Computer Club]( made by [VOC]( (video operation center) in a playlist as found at []( Optionally it can also try to open all streams given in a valid playlist.

First make `strobs` executable with `chmod +x strobs`. Then execute `./strobs`. Install mpv if not existing.

Usage: strobs [ -d | -D | -f | -h | -j | -k | -m | -n | -p _file_ | -s | -t | -v | -V | -x]

  • -d debug mode: print commands and arguments while executed
  • -D debug mode: print script lines while read
  • -f forces (with -p / -j) open playlist / download full json
  • -h help shown
  • -j json export to disk
  • -k keys/shortcuts shown (`input.conf` needed)
  • -m man page shown (`strobs.1` needed)
  • -n name stream with technical extension
  • -p playlist _file_ with servers in format m3u8
  • -s sort server list alphanumerical
  • -t timetable of running and coming events shown
  • -v verbosity increasing with _v_
  • -V version print
  • -x exit before mpv, keeps current-playlist.m3u8

The script downloads []( and searches for active (current streaming) streams. It reads then []( and extracts end time of the streams and their display names. With this informations it builds a playlist in m3u8 format and starts mpv with this playlist.

  • `strobs` - opens current streams in mpv.
  • `strobs -p 36c3.m3u8 -s` - uses the playlist 36c3.m3u8 for mpv. In addition it will sort the returned streams alphanumerical.
  • `strobs -j -f` - will download and save status\_liveber.xsl, status\_ingest.xsl, current.json and exit before opening mpv. In addition it will save json including past events.
  • `current-playlist.m3u8` - generated playlist while running
  • `input.conf` - user-defined key bindings for mpv
  • `keys.lua` - script with key bindings for audio, video and rooms
  • `strobs` - the shell script to execute
  • `strobs.1` - man page
  • `voctocat.png` - image used as last playlist item, so mpv does not stop

Only `strobs` is absolutely necessary observe running voc video streams.

  • 1 – 0 room number 1 to 10
  • q select native audio
  • w select translation 1
  • e select translation 2
  • y select video mixer output
  • x select slides
  • RIGHT seek 5
  • LEFT seek -5
  • UP seek 60
  • DOWN seek -60
  • Shift+PGUP seek 600
  • Shift+PGDWN seek -600
  • SPACE cycle pause
  • \> playlist-next; skip to next room
  • < playlist-previous; skip to previous room
  • i toggle transport osd
  • I (upper i) toggle display stats
  • ctrl++ add audio-delay 100ms; this changes audio/video sync
  • ctrl+- add audio-delay -100ms
  • m cycle mute
  • d cycle deinterlace
  • \# cycle audio
  • _ cycle video
  • f cycle fullscreen
  • s screenshot
  • F8 show rooms
  • F9 show list of audio/sub streams

It is starting a playlist in mpv with following options:

  • –fs
    • full screen
  • –no-ytdl
    • disable the youtube-dl hook-script (404 should try next stream immediately)
  • –msg-level=all=error,ffmpeg=fatal
    • all modules just error messages, but ffmpeg/video fatal (because of permanent irrelevant PoC errors)
  • –no-input-default-bindings
    • deactivate all default key bindings
  • –input-conf=${progpath}input.conf
    • look for configuration file in the same directory where strobs is starting
  • –load-scripts=no
    • don't load any scripts from personal config
  • –scripts=keys.lua
    • load these script:${progpath}keys.lua
  • –force-window=immediate
    • create the gui immediately on program start
  • –keep-open=always
    • don't terminate if the current file is ending and playback will never automatically advance to the next file
  • –idle=yes
    • wait idly instead of quitting when there is no file to play
  • –vd-lavc-show-all=yes
    • don't wail until an initial keyframe was decoded for a quicker startup
  • –no-initial-audio-sync
    • audio is started immediately even if start timestamp differs from video, if necessary video timing is gradually adjusted
  • –audio-stream-silence=yes
    • when pausing playback or stop and restart audio on seeks, audio is not stopped and silence is played
  • –demuxer-cache-wait=no
    • don't read data until the demuxer cache has reached maximum capacity
  • –screenshot-format=png
    • set the screenshot image file type to png (default: jpg)
  • –script-opts=osc-visibility=always
    • visibility mode of on screen controller
  • –osd-duration=5000
    • set the duration of the OSD messages in ms (default: 1000)
  • –osd-msg1=“room: 1 – 0       audio: q, w, e - Native, Translated 1, Translated 2       video: y, x - HD, Slides”
    • show this string as message on OSD with OSD level 1 (visible by default)
    • used as minimal manual
  • –no-osd-bar
    • disable display of the OSD bar while seeking
  • –osd-font-size=30
    • specify the OSD font size (default: 55)
  • –osd-spacing=1
    • horizontal OSD font spacing in scaled pixels (default: 0)
  • –osd-border-size=1
    • size of the OSD font border in scaled pixels (default: 3)
  • –osd-margin-x=10
    • left and right screen margin for the OSD in scaled pixels
  • –osd-margin-y=4
    • top and bottom screen margin for the OSD in scaled pixels
  • projects/stream-observer_strobs.txt
  • Last modified: 2024/01/21 17:49
  • by simpel