summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2024-04-01 17:33:51 +0200
committerChristian Pointner <equinox@spreadspace.org>2024-04-01 17:33:51 +0200
commit23ecb54d0b05404997ec2f9c08c02551196bffa1 (patch)
tree40b8b8446b537f570e37c7591bc14e4c5e17b22d /roles
parentele-media: upgrade kubernetes to 1.29.3 (diff)
add streaming/mpv-headless role (needs more testing)
Diffstat (limited to 'roles')
-rw-r--r--roles/streaming/mpv-headless/defaults/main.yml10
-rw-r--r--roles/streaming/mpv-headless/tasks/main.yml93
2 files changed, 103 insertions, 0 deletions
diff --git a/roles/streaming/mpv-headless/defaults/main.yml b/roles/streaming/mpv-headless/defaults/main.yml
new file mode 100644
index 00000000..b1ab265f
--- /dev/null
+++ b/roles/streaming/mpv-headless/defaults/main.yml
@@ -0,0 +1,10 @@
+---
+# mpv_headless_media_storage:
+# type: ...
+
+mpv_headless_audio_device: "alsa/hdmi"
+mpv_headless_video_mode: "1920x1080@50"
+
+mpv_headless_play_script: |
+ #!/bin/sh
+ exec mpv --audio-device='{{ mpv_headless_audio_device }}' --vo=gpu --hwdec=vaapi --gpu-context=drm --drm-mode='{{ mpv_headless_video_mode }}' $@
diff --git a/roles/streaming/mpv-headless/tasks/main.yml b/roles/streaming/mpv-headless/tasks/main.yml
new file mode 100644
index 00000000..064efeb2
--- /dev/null
+++ b/roles/streaming/mpv-headless/tasks/main.yml
@@ -0,0 +1,93 @@
+---
+- name: install packages
+ apt:
+ name:
+ - alsa-utils
+ - intel-gpu-tools
+ - vainfo
+ - va-driver-all
+ - firmware-linux
+ - ffmpeg
+ - mpv
+ state: present
+
+- name: install non-free vaapi drivers
+ when: "'non-free' in (apt_repo_components | default([])) "
+ apt:
+ name:
+ - i965-va-driver-shaders
+ - intel-media-va-driver-non-free
+ state: present
+
+- name: create player user
+ user:
+ name: player
+ home: /var/lib/player
+ create_home: no
+ shell: /bin/sh
+ system: yes
+ groups:
+ - video
+ - render
+ - audio
+ state: present
+
+- name: create empty user dir for player
+ file:
+ path: /var/lib/player
+ state: directory
+ owner: player
+ group: player
+
+- name: install .profile
+ copy:
+ content: |
+ if [ -z "$DISPLAY" ]; then
+ case $(tty) in
+ /dev/tty1)
+ setterm --clear=all --cursor off
+ sleep inf
+ ;;
+ esac
+ fi
+ dest: /var/lib/player/.profile
+ owner: player
+ group: player
+
+- name: install play script
+ copy:
+ content: "{{ mpv_headless_play_script }}"
+ dest: /var/lib/player/play
+ owner: player
+ group: player
+ mode: 0755
+
+- name: create override direcotry for getty@tty1 service unit
+ file:
+ path: /etc/systemd/system/getty@tty1.service.d
+ state: directory
+
+- name: generate override for getty@tty1 service unit
+ copy:
+ content: |
+ [Service]
+ ExecStart=
+ ExecStart=-/sbin/agetty --autologin player --noclear %I $TERM
+ RestartSec=2
+ StartLimitInterval=5
+ StartLimitBurst=3
+ dest: /etc/systemd/system/getty@tty1.service.d/autologin.conf
+
+- name: make sure getty@tty1 service unit is enabled and started
+ systemd:
+ daemon_reload: yes
+ name: getty@tty1.service
+ state: started
+ enabled: yes
+
+- name: prepare storage volume for /srv/media
+ when: mpv_headless_media_storage is defined
+ vars:
+ storage_volume: "{{ mpv_headless_media_storage | combine({'dest': '/srv/media'}) }}"
+ include_role:
+ name: "storage/{{ mpv_headless_media_storage.type }}/volume"