From 23ecb54d0b05404997ec2f9c08c02551196bffa1 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Mon, 1 Apr 2024 17:33:51 +0200 Subject: add streaming/mpv-headless role (needs more testing) --- roles/streaming/mpv-headless/defaults/main.yml | 10 +++ roles/streaming/mpv-headless/tasks/main.yml | 93 ++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 roles/streaming/mpv-headless/defaults/main.yml create mode 100644 roles/streaming/mpv-headless/tasks/main.yml (limited to 'roles/streaming') 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" -- cgit v1.2.3