Skip to content

Instantly share code, notes, and snippets.

@secemp9
Created July 14, 2024 17:19
Show Gist options
  • Save secemp9/24cc95d4451c3fe25816744237fc1cb9 to your computer and use it in GitHub Desktop.
Save secemp9/24cc95d4451c3fe25816744237fc1cb9 to your computer and use it in GitHub Desktop.
Stream test again
#!/bin/bash
YOUTUBE_URL="rtmp://a.rtmp.youtube.com/live2/KEY"
TWITTER_URL="rtmp://va.pscp.tv:80/x/KEY"
TWITCH_URL="rtmp://live.twitch.tv/app/KEY"
YOUTUBE_BITRATE="9M"
TWITTER_BITRATE="9M"
TWITCH_BITRATE="7M"
LOCAL_RTMP="rtmp://0.0.0.0:1935"
PIPE_PATH_BASE="/tmp/live_stream"
PLATFORMS=("youtube" "twitter" "twitch")
for platform in "${PLATFORMS[@]}"; do
pipe_path="${PIPE_PATH_BASE}_${platform}.pipe"
[ -e "$pipe_path" ] && rm "$pipe_path"
mkfifo "$pipe_path"
done
ffmpeg -listen 1 -i "$LOCAL_RTMP" -c copy \
-f tee \
"[f=mpegts]${PIPE_PATH_BASE}_youtube.pipe|\
[f=mpegts]${PIPE_PATH_BASE}_twitter.pipe|\
[f=mpegts]${PIPE_PATH_BASE}_twitch.pipe" &
start_output() {
local platform=$1
local url=$2
local bitrate=$3
local pipe_path="${PIPE_PATH_BASE}_${platform}.pipe"
while true; do
ffmpeg -i "$pipe_path" \
-c:v libx264 -preset veryfast -tune zerolatency \
-b:v "$bitrate" -maxrate "$bitrate" -bufsize 3000k \
-g 60 -flags +global_header \
-c:a copy \
-f flv "$url"
echo "Restarting $platform stream..."
sleep 5
done
}
start_output "youtube" "$YOUTUBE_URL" "$YOUTUBE_BITRATE" &
start_output "twitter" "$TWITTER_URL" "$TWITTER_BITRATE" &
start_output "twitch" "$TWITCH_URL" "$TWITCH_BITRATE" &
wait
trap 'rm -f "${PIPE_PATH_BASE}"*.pipe' EXIT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment