From 4fe95f44f002a0399f8e31a93e9425edf40a9671 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Mon, 21 Nov 2022 14:32:08 -0500 Subject: restreaming --- roles/stream/tasks/main.yml | 37 ++++++++++--------------------------- roles/stream/tasks/track.yml | 17 +++++++++++++++++ roles/stream/templates/restream.sh | 18 ++++++++++++++++++ 3 files changed, 45 insertions(+), 27 deletions(-) create mode 100644 roles/stream/tasks/track.yml create mode 100755 roles/stream/templates/restream.sh (limited to 'roles/stream') diff --git a/roles/stream/tasks/main.yml b/roles/stream/tasks/main.yml index d741c72..941ac92 100644 --- a/roles/stream/tasks/main.yml +++ b/roles/stream/tasks/main.yml @@ -13,27 +13,8 @@ path: "{{ icecast_restream_dir }}" owner: "{{ icecast_user }}" state: directory -- name: Debug - debug: - var: item.id - loop: "{{ emacsconf_tracks }}" -- name: Copy the lowres restreaming shell script - template: - src: lowres.sh - dest: /usr/local/bin/{{ emacsconf_id }}-lowres-{{ item.id }}.sh - mode: 0755 - loop: "{{ emacsconf_tracks }}" -- name: Copy lowres on-connect - template: - src: on-connect - dest: /usr/local/bin/{{ emacsconf_id }}-lowres-{{ item.id }}-on-connect - mode: 0755 - loop: "{{ emacsconf_tracks }}" -- name: Copy lowres on-disconnect - template: - src: on-disconnect - dest: /usr/local/bin/{{ emacsconf_id }}-lowres-{{ item.id }}-on-disconnect - mode: 0755 +- name: Set up track-specific things + include: track.yml loop: "{{ emacsconf_tracks }}" - name: Set up init file become: true @@ -73,9 +54,11 @@ - name: Try to restart icecast if not started service: name=emacsconf state=started enabled=yes when: port_check.failed == true -# - name: Set up restream script -# template: -# src: restream-yt.sh -# dest: /home/orga/restream-yt.sh -# owner: orga -# mode: 0755 +- name: Set up restream scripts + tags: restream + template: + src: restream.sh + dest: /home/orga/restream-{{ item[1].name }}-{{ item[0].name }}.sh + owner: orga + mode: 0755 + loop: "{{ restreaming_platforms | subelements('streams') | list }}" diff --git a/roles/stream/tasks/track.yml b/roles/stream/tasks/track.yml new file mode 100644 index 0000000..d1e8204 --- /dev/null +++ b/roles/stream/tasks/track.yml @@ -0,0 +1,17 @@ +- name: Copy the lowres restreaming shell script + template: + src: lowres.sh + dest: /usr/local/bin/{{ emacsconf_id }}-lowres-{{ item.id }}.sh + mode: 0755 +- name: Copy lowres on-connect + template: + src: on-connect + dest: /usr/local/bin/{{ emacsconf_id }}-lowres-{{ item.id }}-on-connect + mode: 0755 +- name: Copy lowres on-disconnect + template: + src: on-disconnect + dest: /usr/local/bin/{{ emacsconf_id }}-lowres-{{ item.id }}-on-disconnect + mode: 0755 + + diff --git a/roles/stream/templates/restream.sh b/roles/stream/templates/restream.sh new file mode 100755 index 0000000..e1d0a7f --- /dev/null +++ b/roles/stream/templates/restream.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# {{ ansible_managed }} +MOUNT={{ item[0].stream_url }}/{{ item[1].key }} # rtmp://..../stream_key +LOGLEVEL="${LOGLEVEL:-24}" +for i in 1 2 3 4 5; do + ffmpeg -re -loglevel $LOGLEVEL -i http://localhost:{{ icecast_port }}/{{ emacsconf_id }}/{{ item[1].source }} \ + -cluster_size_limit 2M \ + -cluster_time_limit 5100 \ + -b:v 1M \ + -crf 30 \ + -g 125 \ + -deadline re \ + -threads 4 \ + -vcodec libx264 \ + -acodec libmp3lame \ + -f flv $MOUNT + sleep 5 # in case of error +done -- cgit v1.2.3