From 9714f9dfa1eea2264e8b6a02cd7e7d1a123e4730 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 29 May 2022 01:32:33 +0200 Subject: rename role rtmp/streamer to streamer/rtmp --- .../streamer/rtmp/templates/nginx.conf.j2 | 32 +++++ .../streamer/rtmp/templates/pod-spec.yml.j2 | 143 +++++++++++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 roles/streaming/streamer/rtmp/templates/nginx.conf.j2 create mode 100644 roles/streaming/streamer/rtmp/templates/pod-spec.yml.j2 (limited to 'roles/streaming/streamer/rtmp/templates') diff --git a/roles/streaming/streamer/rtmp/templates/nginx.conf.j2 b/roles/streaming/streamer/rtmp/templates/nginx.conf.j2 new file mode 100644 index 00000000..37e7aa84 --- /dev/null +++ b/roles/streaming/streamer/rtmp/templates/nginx.conf.j2 @@ -0,0 +1,32 @@ +worker_processes 1; +pid /var/lib/nginx/nginx.pid; +error_log /dev/stderr info; + +include /etc/nginx/modules-enabled/*.conf; + +events { + worker_connections 768; + # multi_accept on; +} + +rtmp { + access_log /dev/null; + + server { + listen 1935; + + ping 10s; + ping_timeout 3s; + drop_idle_publisher 10s; + idle_streams off; + max_message 4M; + + application {{ streamer_rtmp_app_name }} { + live on; + meta copy; + + allow publish 127.0.0.1; + deny publish all; + } + } +} diff --git a/roles/streaming/streamer/rtmp/templates/pod-spec.yml.j2 b/roles/streaming/streamer/rtmp/templates/pod-spec.yml.j2 new file mode 100644 index 00000000..301b4f33 --- /dev/null +++ b/roles/streaming/streamer/rtmp/templates/pod-spec.yml.j2 @@ -0,0 +1,143 @@ +containers: +- name: nginx + image: registry.gitlab.com/spreadspace/docker/nginx:{{ streamer_rtmp_nginx_image_version }} + imagePullPolicy: Always + command: + - nginx + args: + - -c + - /srv/nginx.conf + - -g + - "daemon off;" + ports: + - containerPort: 1935 + hostPort: {{ streamer_rtmp_port }} + volumeMounts: + - name: home + mountPath: /srv + readOnly: true + - name: nginx-lib + mountPath: /var/lib/nginx + +- name: source + image: registry.gitlab.com/spreadspace/docker/ffmpeg:{{ streamer_rtmp_ffmpeg_image_version }} + imagePullPolicy: Always + command: + - /usr/local/bin/generic-rtmp.py + args: +{% for param in streamer_rtmp_input %} + - '{{ param }}' +{% endfor %} + env: + - name: CONFIG_FILENAME + value: /srv/config.yml + - name: QUALITY_LEVELS + value: {{ streamer_rtmp_quality_levels | join(',') }} + - name: AUDIO_TRACKS + value: {{ streamer_rtmp_audio_track }} +{% if streamer_rtmp_video_filter_common is defined %} + - name: VIDEO_FILTER_COMMON + value: "{{ streamer_rtmp_video_filter_common }}" +{% endif %} + securityContext: + privileged: true + volumeMounts: + - name: home + mountPath: /srv + readOnly: true + - name: decklink-device + mountPath: /dev/blackmagic + - name: decklink-libs + subPath: libDeckLinkAPI.so + mountPath: /usr/lib/libDeckLinkAPI.so + readOnly: true + - name: decklink-libs + subPath: libDeckLinkPreviewAPI.so + mountPath: /usr/lib/libDeckLinkPreviewAPI.so + readOnly: true + - name: decklink-libs + subPath: blackmagic + mountPath: /usr/lib/blackmagic + readOnly: true + +{% for name, forward in streamer_rtmp_forwards.items() %} +- name: "forward-{{ name }}" + image: registry.gitlab.com/spreadspace/docker/ffmpeg:{{ streamer_rtmp_ffmpeg_image_version }} + imagePullPolicy: Always + command: + - /usr/bin/ffmpeg + args: + - -f + - live_flv + - -rtmp_live + - live + - -i + - "rtmp://127.0.0.1/{{ streamer_rtmp_app_name }}/{{ forward.level }}" + - -c:a + - copy + - -c:v + - copy + - -f + - flv + - "{{ forward.url }}" + +{% endfor %} +{% if streamer_rtmp_recording is defined %} +- name: record + image: registry.gitlab.com/spreadspace/docker/ffmpeg:{{ streamer_rtmp_ffmpeg_image_version }} + imagePullPolicy: Always + command: + - /usr/bin/ffmpeg + args: + - -f + - live_flv + - -rtmp_live + - live + - -i + - 'rtmp://127.0.0.1/{{ streamer_rtmp_app_name }}/{{ streamer_rtmp_recording.level }}' + - -c:a + - copy + - -c:v + - copy + - -f + - segment + - -segment_atclocktime + - '1' + - -segment_time + - '{{ streamer_rtmp_recording.segment_time | default(3600) }}' + - -segment_clocktime_offset + - '{{ streamer_rtmp_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 + readOnly: true + - name: recordings + mountPath: /srv/recordings + +{% endif %} +volumes: +- name: home + hostPath: + path: "{{ streamer_rtmp_base_path }}/{{ streamer_rtmp_inst_name }}" +- name: nginx-lib + emptyDir: + medium: Memory +- name: decklink-device + hostPath: + path: /dev/blackmagic +- name: decklink-libs + hostPath: + type: Directory + path: /usr/lib/ +{% if streamer_rtmp_recording is defined %} +- name: recordings + hostPath: + type: Directory + path: "{{ streamer_rtmp_base_path }}/{{ streamer_rtmp_inst_name }}/recordings" +{% endif %} -- cgit v1.2.3