this repo has no description
at main 74 lines 2.0 kB view raw
1#!/usr/bin/env bash 2set -euo pipefail 3 4if [[ -z "${WEBSITE_URL:-}" ]]; then 5 echo "WEBSITE_URL is required" >&2 6 exit 1 7fi 8 9if [[ -z "${OUTPUT:-}" && ( -z "${RTMP_URL:-}" || -z "${STREAM_KEY:-}" ) ]]; then 10 echo "Provide either OUTPUT or both RTMP_URL and STREAM_KEY" >&2 11 exit 1 12fi 13 14if [[ -n "${BROWSER_STREAM_CHROMIUM_PATH:-}" ]]; then 15 CHROMIUM_BIN="${BROWSER_STREAM_CHROMIUM_PATH}" 16elif command -v chromium >/dev/null 2>&1; then 17 CHROMIUM_BIN="$(command -v chromium)" 18elif command -v chromium-browser >/dev/null 2>&1; then 19 CHROMIUM_BIN="$(command -v chromium-browser)" 20else 21 echo "Could not find chromium binary in container" >&2 22 exit 1 23fi 24 25if [[ ! -x "${CHROMIUM_BIN}" ]]; then 26 echo "Configured chromium binary is not executable: ${CHROMIUM_BIN}" >&2 27 exit 1 28fi 29 30if [[ -n "${BROWSER_STREAM_FFMPEG_PATH:-}" ]]; then 31 FFMPEG_BIN="${BROWSER_STREAM_FFMPEG_PATH}" 32elif command -v ffmpeg >/dev/null 2>&1; then 33 FFMPEG_BIN="$(command -v ffmpeg)" 34else 35 echo "Could not find ffmpeg binary in container" >&2 36 exit 1 37fi 38 39if [[ ! -x "${FFMPEG_BIN}" ]]; then 40 echo "Configured ffmpeg binary is not executable: ${FFMPEG_BIN}" >&2 41 exit 1 42fi 43 44args=( 45 --url "${WEBSITE_URL}" 46 --width "${WIDTH:-1920}" 47 --height "${HEIGHT:-1080}" 48 --fps "${FPS:-30}" 49 --bitrate-kbps "${BITRATE_KBPS:-4500}" 50 --keyint-sec "${KEYINT_SEC:-1}" 51 --x264-opts "${X264_OPTS:-bframes=0}" 52 --retries "${RETRIES:-5}" 53 --retry-backoff-ms "${RETRY_BACKOFF_MS:-1000}" 54 --startup-delay-ms "${STARTUP_DELAY_MS:-2000}" 55 --frame-timeout-ms "${FRAME_TIMEOUT_MS:-30000}" 56 --chromium-path "${CHROMIUM_BIN}" 57 --ffmpeg-path "${FFMPEG_BIN}" 58) 59 60if [[ -n "${OUTPUT:-}" ]]; then 61 args+=(--output "${OUTPUT}") 62else 63 args+=(--rtmp-url "${RTMP_URL}" --stream-key "${STREAM_KEY}") 64fi 65 66if [[ "${VERBOSE:-0}" == "1" || "${VERBOSE:-false}" == "true" ]]; then 67 args+=(--verbose) 68fi 69 70if [[ "${NO_AUDIO:-0}" == "1" || "${NO_AUDIO:-false}" == "true" ]]; then 71 args+=(--no-audio) 72fi 73 74exec /usr/local/bin/browser-stream "${args[@]}" "$@"