Mplayer

From wikinotes

A very versatile media player.

Documentation

homepage http://www.mplayerhq.hu/design7/news.html
documentation http://www.mplayerhq.hu/DOCS/HTML/en/index.html
man mplayer http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.html

Tutorials

mplayer intro https://www.unixmen.com/basic-mplayer-usage-from-command-line/

Neat Tricks

terminal control

It is possible to control an mplayer instance from the CLI using the -slave param.
check out http://www.mplayerhq.hu/DOCS/tech/slave.txt .

you can write commands to a fifo and control the video stream.

FIFO=/var/tmp/my_mplayer_fifo

test -p $FIFO || mkfifo $FIFO        # create fifo (deleting other files in the way)
mplayer -input file=$FIFO file.mkv    # mplayer reads from fifo (requires realpath!)
echo pause > $FIFO                  # send instruction to mplayer
# commands: http://www.mplayerhq.hu/DOCS/tech/slave.txt
mplayer -input cmdlist  # abbreviated commands

# some useful commands
pause          # toggle play/pause
set volume 25  # set SYSTEM volume

video as wallpaper

Dependencies

pacaur -S xwinwrap-git
pacman -S mplayer

Single Monitor

If you can find/make an ultra widescreen panorama, this is probably the way to go.

xwinwrap -ov -fs -- mplayer -wid WID -quiet -nosound -loop 0 *.mkv

Alternatively, this method plays video as wallpaper, but has issues with compositors (xcompmgr, compton, ..)
It also gets confused when sharing a workspace with another window. Not ideal.

# See https://www.reddit.com/r/i3wm/comments/51hjkn/vlcs_videowallpaper_is_just_a_fullscreen_mode/
mplayer  -rootwin -vo xv -ao null -noconsolecontrols -fs /ocean_waves.mkv

Multiple Monitors

If rendering a video on different monitors, you'll need to be explicit about the monitor's geometry.
Add -shuffle if you'd like a different video on each monitor, but it's a bit chaotic for me.

FILES=($(ls *.mkv))

monitor_geoms(){
    xrandr \
        | grep -P '(?<!dis)connected' \
        | grep -o -P '\d+x\d+\+\d+\+\d'
}

for geom in `monitor_geoms`; do
    xwinwrap -ov -g "${geom}" -- mplayer -wid WID -quiet -nosound -loop 0 -shuffle "${FILES[@]}" &
done

The same video on each monitor.

TODO

video in ascii