ffmpeg: Videolivestream mit Live-Audiostream

0

Es gibt durchaus im Audiobusiness häufiger den Anwendungsfall, dass man auf Videoplattformen den Live-Audio-Stream mit einem Standard-Footage weiterverbreiten möchte. Das geht mit ffmpeg relativ simpel. Hier ein Beispiel unter Debian 11, das sehr generisch ist. Der Aufbau ist immer der selbe:

  • unter STREAM_URL wird der Streamingserver eingetragen, z.B. von YouTube,
  • unter SOURCE1 das Video oder Bild, das als Loop laufen soll,
  • unter SOURCE2 der Audiostream und
  • unter KEY der Streamingkey für die Plattform (Authentifizierungskey).

Bild Stream Beispiel


#! /bin/bash

STREAM_URL="rtmp://..."

SOURCE1="/var/www/htdocs/mixcloud-video.jpg"
SOURCE2="https://stream.url/stream"
KEY=""

ffmpeg \
-loop 1 -i "$SOURCE1" -i "$SOURCE2" \
-c:v libx264 -tune stillimage -pix_fmt yuv420p \
-b:a 192k -threads 0 -preset fast -bufsize 2048k \
-f flv "$STREAM_URL/$KEY"

Video Stream Beispiel


#! /bin/bash


STREAM_URL="rtmp://..."

SOURCE1="/var/www/htdocs/mixcloud-video.mp4"
SOURCE2="https://stream.url/stream"
KEY=""

ffmpeg \
-re -stream_loop -1 -i "$SOURCE1" -i "$SOURCE2" \
-c:v libx264 -tune stillimage -pix_fmt yuv420p \
-b:a 192k -threads 0 -preset fast -bufsize 2048k \
-f flv "$STREAM_URL/$KEY"


Service

Damit der ffmpeg Aufruf im Hintergrund sauber weiterläuft einfach unter /etc/system/systemd/ einen Service anlegen, z.B. ffmpeg-mixcloud.service:


[Unit]
Description=mixcloudstream
After=network.target remote-fs.target nss-lookup.target

[Service]
User=root
Restart=on-failure
RestartSec=30
ExecStart=/root/mixcloudstream.sh
KillSignal=SIGTERM

[Install]
WantedBy=multi-user.target

Hier gilt es darauf zu achten, dass unter ExecStart der richtige Pfad zum Skript oben hinterlegt ist.

Leave A Reply

Your email address will not be published.