summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inventory/host_vars/ch-thetys.yml1
-rw-r--r--inventory/host_vars/glt-dione.yml5
-rw-r--r--inventory/host_vars/glt-helene.yml5
-rw-r--r--inventory/host_vars/glt-thetys.yml5
-rw-r--r--inventory/host_vars/s2-thetys.yml3
-rw-r--r--roles/streaming/rtmp/streamer/defaults/main.yml10
-rw-r--r--roles/streaming/rtmp/streamer/tasks/main.yml23
-rw-r--r--roles/streaming/rtmp/streamer/templates/pod-spec.yml.j231
-rw-r--r--roles/streaming/rtmp/streamer/templates/record.sh.j29
9 files changed, 56 insertions, 36 deletions
diff --git a/inventory/host_vars/ch-thetys.yml b/inventory/host_vars/ch-thetys.yml
index 01d15b68..5ebc387a 100644
--- a/inventory/host_vars/ch-thetys.yml
+++ b/inventory/host_vars/ch-thetys.yml
@@ -57,7 +57,6 @@ rtmp_streamer_base_path: /srv/storage/streamer
rtmp_streamer_inst_name: feed
rtmp_streamer_nginx_image_version: 2021-02-24.20
rtmp_streamer_decklink_card: "DeckLink Mini Recorder"
-rtmp_streamer_recording_enabled: no
rtmp_streamer_config:
# input_params: ['-f', 'decklink', '-video_input', 'hdmi', '-format_code', 'Hp25', '-ac', '2', '-i']
# input_params: ['-f', 'decklink', '-video_pts', 'wallclock', '-audio_pts', 'wallclock', '-video_input', 'hdmi', '-format_code', 'Hp25', '-ac', '2', '-i']
diff --git a/inventory/host_vars/glt-dione.yml b/inventory/host_vars/glt-dione.yml
index 32cdc896..1ea8ed4f 100644
--- a/inventory/host_vars/glt-dione.yml
+++ b/inventory/host_vars/glt-dione.yml
@@ -84,7 +84,10 @@ rtmp_streamer_config:
full:
vbitrate: 7000
-rtmp_streamer_recording_enabled: yes
+rtmp_streamer_recording:
+ level: full
+ segment_size: 3600
+ segment_clocktime_offset: 3300
rtmp_streamer_forwards:
c3voc:
url: "rtmp://ingest.c3voc.de/stream/glt21s2?auth={{ vault_rtmp_streamer_forward_keys.c3voc.glt21s2 }}"
diff --git a/inventory/host_vars/glt-helene.yml b/inventory/host_vars/glt-helene.yml
index 6f425c85..435b3489 100644
--- a/inventory/host_vars/glt-helene.yml
+++ b/inventory/host_vars/glt-helene.yml
@@ -84,7 +84,10 @@ rtmp_streamer_config:
full:
vbitrate: 7000
-rtmp_streamer_recording_enabled: yes
+rtmp_streamer_recording:
+ level: full
+ segment_size: 3600
+ segment_clocktime_offset: 3300
rtmp_streamer_forwards:
c3voc:
url: "rtmp://ingest.c3voc.de/stream/glt21s3?auth={{ vault_rtmp_streamer_forward_keys.c3voc.glt21s3 }}"
diff --git a/inventory/host_vars/glt-thetys.yml b/inventory/host_vars/glt-thetys.yml
index d1c9f56d..c6b8499e 100644
--- a/inventory/host_vars/glt-thetys.yml
+++ b/inventory/host_vars/glt-thetys.yml
@@ -89,7 +89,10 @@ rtmp_streamer_config:
full:
vbitrate: 7000
-rtmp_streamer_recording_enabled: yes
+rtmp_streamer_recording:
+ level: full
+ segment_size: 3600
+ segment_clocktime_offset: 3300
rtmp_streamer_forwards:
c3voc:
url: "rtmp://ingest.c3voc.de/stream/glt21s1?auth={{ vault_rtmp_streamer_forward_keys.c3voc.glt21s1 }}"
diff --git a/inventory/host_vars/s2-thetys.yml b/inventory/host_vars/s2-thetys.yml
index c16b26b3..de2afaa5 100644
--- a/inventory/host_vars/s2-thetys.yml
+++ b/inventory/host_vars/s2-thetys.yml
@@ -68,7 +68,8 @@ rtmp_streamer_base_path: /srv/storage/streamer
rtmp_streamer_inst_name: feed
rtmp_streamer_nginx_image_version: 2021-02-24.20
rtmp_streamer_decklink_card: "DeckLink Mini Recorder"
-rtmp_streamer_recording_enabled: yes
+rtmp_streamer_recording:
+ level: full
rtmp_streamer_config:
input_params: ['-f', 'decklink', '-format_code', 'Hp25', '-ac', '2', '-i']
diff --git a/roles/streaming/rtmp/streamer/defaults/main.yml b/roles/streaming/rtmp/streamer/defaults/main.yml
index 95a2ecc2..6d66683a 100644
--- a/roles/streaming/rtmp/streamer/defaults/main.yml
+++ b/roles/streaming/rtmp/streamer/defaults/main.yml
@@ -12,12 +12,16 @@ rtmp_streamer_app_name: "{{ rtmp_streamer_inst_name }}"
rtmp_streamer_quality_levels:
- full
-rtmp_streamer_recording_enabled: no
-rtmp_streamer_recording_level: full
+rtmp_streamer_config: {}
+
rtmp_streamer_forwards: {}
# example:
# url: rtmp://ingest.example.com/foo/secret
# level: full
-rtmp_streamer_config: {}
+
+# rtmp_streamer_recording:
+# level: full
+# segment_time: 7200
+# segment_clocktime_offset: 0
diff --git a/roles/streaming/rtmp/streamer/tasks/main.yml b/roles/streaming/rtmp/streamer/tasks/main.yml
index c5caf471..1715bdf9 100644
--- a/roles/streaming/rtmp/streamer/tasks/main.yml
+++ b/roles/streaming/rtmp/streamer/tasks/main.yml
@@ -21,21 +21,13 @@
content: "{{ rtmp_streamer_config | combine({'rtmp_base_url': 'rtmp://127.0.0.1/'+rtmp_streamer_app_name}) | to_nice_yaml }}\n"
dest: "{{ rtmp_streamer_base_path }}/{{ rtmp_streamer_inst_name }}/config.yml"
-- name: enable recording
- when: rtmp_streamer_recording_enabled | bool
- block:
- - name: create recording directory
- file:
- path: "{{ rtmp_streamer_base_path }}/{{ rtmp_streamer_inst_name }}/recordings"
- state: directory
- owner: app
- group: app
-
- - name: generate recording script
- template:
- src: record.sh.j2
- dest: "{{ rtmp_streamer_base_path }}/{{ rtmp_streamer_inst_name }}/record.sh"
- mode: 0755
+- name: create recording directory
+ when: rtmp_streamer_recording is defined
+ file:
+ path: "{{ rtmp_streamer_base_path }}/{{ rtmp_streamer_inst_name }}/recordings"
+ state: directory
+ owner: app
+ group: app
- name: install pod manifest
vars:
@@ -49,6 +41,5 @@
- path: "{{ rtmp_streamer_base_path }}/{{ rtmp_streamer_inst_name }}/config.yml"
properties:
- checksum
- ## TODO: add record.sh if recording is enabled
include_role:
name: kubernetes/standalone/pod
diff --git a/roles/streaming/rtmp/streamer/templates/pod-spec.yml.j2 b/roles/streaming/rtmp/streamer/templates/pod-spec.yml.j2
index ec51ed14..329267bc 100644
--- a/roles/streaming/rtmp/streamer/templates/pod-spec.yml.j2
+++ b/roles/streaming/rtmp/streamer/templates/pod-spec.yml.j2
@@ -75,12 +75,37 @@ containers:
- "{{ forward.url }}"
{% endfor %}
-{% if rtmp_streamer_recording_enabled %}
+{% if rtmp_streamer_recording is defined %}
- name: record
image: registry.gitlab.com/spreadspace/docker/nginx:{{ rtmp_streamer_nginx_image_version }}
imagePullPolicy: Always
+ command:
+ - /usr/bin/ffmpeg
args:
- - /srv/record.sh
+ - -f
+ - live_flv
+ - -rtmp_live
+ - live
+ - -i
+ - 'rtmp://127.0.0.1/{{ rtmp_streamer_app_name }}/{{ rtmp_streamer_recording.level }}'
+ - -c:a
+ - copy
+ - -c:v
+ - copy
+ - -f
+ - segment
+ - -segment_atclocktime
+ - '1'
+ - -segment_time
+ - '{{ rtmp_streamer_recording.segment_time | default(3600) }}'
+ - -segment_clocktime_offset
+ - '{{ rtmp_streamer_recording.segment_clocktime_offset | default(0) }}'
+ - -strftime
+ - '1'
+ - -reset_timestamps
+ - '1'
+ - '%Y-%m-%d_%H-%M-%S.mkv'
+ workingDir: /srv/recordings
volumeMounts:
- name: home
mountPath: /srv
@@ -103,7 +128,7 @@ volumes:
hostPath:
type: Directory
path: /usr/lib/
-{% if rtmp_streamer_recording_enabled %}
+{% if rtmp_streamer_recording is defined %}
- name: recordings
hostPath:
type: Directory
diff --git a/roles/streaming/rtmp/streamer/templates/record.sh.j2 b/roles/streaming/rtmp/streamer/templates/record.sh.j2
deleted file mode 100644
index 159bf5e2..00000000
--- a/roles/streaming/rtmp/streamer/templates/record.sh.j2
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-BASE_D="/srv/recordings"
-DAY=$(date '+%Y-%m-%d')
-TIME=$(date '+%H-%M-%S')
-
-umask 022
-mkdir -p "$BASE_D/$DAY"
-exec /usr/bin/ffmpeg -f live_flv -rtmp_live live -i "rtmp://127.0.0.1/{{ rtmp_streamer_app_name }}/{{ rtmp_streamer_recording_level }}" -c:a copy -c:v copy -f matroska "$BASE_D/$DAY/$DAY""_$TIME.mkv"