summaryrefslogtreecommitdiff
path: root/roles/streaming/recorder
diff options
context:
space:
mode:
Diffstat (limited to 'roles/streaming/recorder')
-rw-r--r--roles/streaming/recorder/defaults/main.yml14
-rw-r--r--roles/streaming/recorder/tasks/main.yml14
-rw-r--r--roles/streaming/recorder/templates/pod-spec.yml.j251
3 files changed, 38 insertions, 41 deletions
diff --git a/roles/streaming/recorder/defaults/main.yml b/roles/streaming/recorder/defaults/main.yml
index 6bcfde17..e7dca7f1 100644
--- a/roles/streaming/recorder/defaults/main.yml
+++ b/roles/streaming/recorder/defaults/main.yml
@@ -5,12 +5,14 @@
recorder_base_path: /srv/recorder
# recorder_inst_name: feed
-# recorder_ffmpeg_image_version: 2021-02-24.7
-# recorder_decklink_card: "DeckLink Mini Recorder"
-# recorder_decklink_format_code: Hp25
-recorder_audio_channels: 2
-recorder_audio_bitrate: 256k
-recorder_video_crf: 16
+# recorder_ffmpeg_image_version: bullseye-decklink11.7-2022-05-29.21
+# recorder_input: ['-f', 'decklink', '-video_input', 'sdi', '-format_code', 'Hp25', '-ac', '2', '-i', 'DeckLink Mini Recorder']
+# recorder_video_filter_common: "colorspace=iall=bt709:irange=tv:all=bt709:range=tv"
+recorder_audio_tracks:
+ - all
+recorder_quality_level: full
+
+recorder_config: {}
recorder_segment_time: 3600
recorder_segment_clocktime_offset: 0
diff --git a/roles/streaming/recorder/tasks/main.yml b/roles/streaming/recorder/tasks/main.yml
index ee682b89..e1588c83 100644
--- a/roles/streaming/recorder/tasks/main.yml
+++ b/roles/streaming/recorder/tasks/main.yml
@@ -10,6 +10,16 @@
file:
path: "{{ recorder_base_path }}/{{ recorder_inst_name }}"
state: directory
+
+- name: generate recorder config
+ copy:
+ content: "{{ recorder_config | combine({'record': {'segment_time': recorder_segment_time, 'clocktime_offset': recorder_segment_clocktime_offset}}) | to_nice_yaml }}\n"
+ dest: "{{ recorder_base_path }}/{{ recorder_inst_name }}/config.yml"
+
+- name: create recording directory
+ file:
+ path: "{{ recorder_base_path }}/{{ recorder_inst_name }}/recordings"
+ state: directory
owner: app
group: app
@@ -18,5 +28,9 @@
kubernetes_standalone_pod:
name: "recorder-{{ recorder_inst_name }}"
spec: "{{ lookup('template', 'pod-spec.yml.j2') }}"
+ config_hash_items:
+ - path: "{{ recorder_base_path }}/{{ recorder_inst_name }}/config.yml"
+ properties:
+ - checksum
include_role:
name: kubernetes/standalone/pod
diff --git a/roles/streaming/recorder/templates/pod-spec.yml.j2 b/roles/streaming/recorder/templates/pod-spec.yml.j2
index 92f6ce36..cef622bc 100644
--- a/roles/streaming/recorder/templates/pod-spec.yml.j2
+++ b/roles/streaming/recorder/templates/pod-spec.yml.j2
@@ -3,42 +3,23 @@ containers:
image: registry.gitlab.com/spreadspace/docker/ffmpeg:{{ recorder_ffmpeg_image_version }}
imagePullPolicy: Always
command:
- - /usr/bin/ffmpeg
+ - /usr/local/bin/generic-record.py
args:
- - -f
- - decklink
- - -format_code
- - '{{ recorder_decklink_format_code }}'
- - -ac
- - '{{ recorder_audio_channels }}'
- - -i
- - '{{ recorder_decklink_card }}'
- - -c:a
- - aac
- - -b:a
- - '{{ recorder_audio_bitrate }}'
- - -g
- - '1'
- - -c:v
- - libx264
- - -crf
- - '{{ recorder_video_crf }}'
- - -x264-params
- - 'colorprim=bt709:transfer=bt709:colormatrix=bt709:fullrange=off'
- - -f
- - segment
- - -segment_atclocktime
- - '1'
- - -segment_time
- - '{{ recorder_segment_time }}'
- - -segment_clocktime_offset
- - '{{ recorder_segment_clocktime_offset }}'
- - -strftime
- - '1'
- - -reset_timestamps
- - '1'
- - '%Y-%m-%d_%H-%M-%S.mkv'
- workingDir: /srv
+{% for param in recorder_input %}
+ - '{{ param }}'
+{% endfor %}
+ env:
+ - name: CONFIG_FILENAME
+ value: /srv/config.yml
+ - name: QUALITY_LEVELS
+ value: {{ recorder_quality_level }}
+ - name: AUDIO_TRACKS
+ value: {{ recorder_audio_tracks | join(',') }}
+{% if recorder_video_filter_common is defined %}
+ - name: VIDEO_FILTER_COMMON
+ value: "{{ recorder_video_filter_common }}"
+{% endif %}
+ workingDir: /srv/recordings
securityContext:
privileged: true
volumeMounts: