this repo has no description
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[@]}" "$@"