refactor(streamer): adopt proxy backends and typed statuses
This commit is contained in:
Executable
+99
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
BUILD_DIR="${BUILD_DIR:-$ROOT_DIR/build}"
|
||||
SRS_ROOT="${SRS_ROOT:-$HOME/Code/srs}"
|
||||
SRS_BIN="${SRS_BIN:-$SRS_ROOT/trunk/objs/srs}"
|
||||
SRS_CONF="${SRS_CONF:-$SRS_ROOT/trunk/conf/srs.conf}"
|
||||
FFPROBE_BIN="${FFPROBE_BIN:-ffprobe}"
|
||||
|
||||
wait_for_port() {
|
||||
local host="$1"
|
||||
local port="$2"
|
||||
for _ in $(seq 1 80); do
|
||||
if (echo >"/dev/tcp/${host}/${port}") >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
sleep 0.25
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
probe_stream() {
|
||||
local stream_name="$1"
|
||||
local expected_codec="$2"
|
||||
"${FFPROBE_BIN}" \
|
||||
-v error \
|
||||
-select_streams v:0 \
|
||||
-show_entries stream=codec_name,width,height \
|
||||
-of default=noprint_wrappers=1 \
|
||||
"http://127.0.0.1:8080/live/${stream_name}.flv" |
|
||||
tee /dev/stderr |
|
||||
grep -q "^codec_name=${expected_codec}$"
|
||||
}
|
||||
|
||||
wait_for_stream() {
|
||||
local stream_name="$1"
|
||||
local expected_codec="$2"
|
||||
for _ in $(seq 1 40); do
|
||||
if probe_stream "$stream_name" "$expected_codec"; then
|
||||
return 0
|
||||
fi
|
||||
sleep 0.25
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
run_case() {
|
||||
local transport="$1"
|
||||
local codec="$2"
|
||||
local stream_name="cvmmap_${transport}_${codec}"
|
||||
local expected_codec="$codec"
|
||||
if [[ "$codec" == "h265" ]]; then
|
||||
expected_codec="hevc"
|
||||
fi
|
||||
|
||||
"${BUILD_DIR}/rtmp_output_tester" \
|
||||
--transport "$transport" \
|
||||
--codec "$codec" \
|
||||
--rtmp-url "rtmp://127.0.0.1/live/${stream_name}" \
|
||||
--frames 36 \
|
||||
--frame-interval-ms 33 \
|
||||
--linger-ms 4000 &
|
||||
local tester_pid=$!
|
||||
|
||||
wait_for_stream "$stream_name" "$expected_codec"
|
||||
wait "$tester_pid"
|
||||
}
|
||||
|
||||
if [[ ! -x "$SRS_BIN" ]]; then
|
||||
echo "SRS binary not found: $SRS_BIN" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
SRS_LOG="${BUILD_DIR}/srs-smoke.log"
|
||||
|
||||
pushd "${SRS_ROOT}/trunk" >/dev/null
|
||||
"$SRS_BIN" -c "$SRS_CONF" >"$SRS_LOG" 2>&1 &
|
||||
SRS_PID=$!
|
||||
popd >/dev/null
|
||||
|
||||
cleanup() {
|
||||
if kill -0 "$SRS_PID" >/dev/null 2>&1; then
|
||||
kill "$SRS_PID" >/dev/null 2>&1 || true
|
||||
wait "$SRS_PID" >/dev/null 2>&1 || true
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
wait_for_port 127.0.0.1 1935
|
||||
wait_for_port 127.0.0.1 8080
|
||||
|
||||
run_case libavformat h264
|
||||
run_case ffmpeg_process h264
|
||||
run_case libavformat h265
|
||||
run_case ffmpeg_process h265
|
||||
|
||||
echo "RTMP SRS smoke tests completed successfully"
|
||||
Reference in New Issue
Block a user