chore(sync): preflight mjpeg uvc before capture
This commit is contained in:
parent
016f97cd00
commit
c2e8894821
6
Cargo.lock
generated
6
Cargo.lock
generated
@ -1642,7 +1642,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
||||
|
||||
[[package]]
|
||||
name = "lesavka_client"
|
||||
version = "0.14.27"
|
||||
version = "0.14.28"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-stream",
|
||||
@ -1676,7 +1676,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lesavka_common"
|
||||
version = "0.14.27"
|
||||
version = "0.14.28"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
@ -1688,7 +1688,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lesavka_server"
|
||||
version = "0.14.27"
|
||||
version = "0.14.28"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
|
||||
@ -4,7 +4,7 @@ path = "src/main.rs"
|
||||
|
||||
[package]
|
||||
name = "lesavka_client"
|
||||
version = "0.14.27"
|
||||
version = "0.14.28"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "lesavka_common"
|
||||
version = "0.14.27"
|
||||
version = "0.14.28"
|
||||
edition = "2024"
|
||||
build = "build.rs"
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd)"
|
||||
|
||||
TETHYS_HOST=${TETHYS_HOST:-tethys}
|
||||
LESAVKA_SERVER_HOST=${LESAVKA_SERVER_HOST:-theia}
|
||||
LESAVKA_SERVER_ADDR=${LESAVKA_SERVER_ADDR:-http://38.28.125.112:50051}
|
||||
PROBE_DURATION_SECONDS=${PROBE_DURATION_SECONDS:-10}
|
||||
PROBE_WARMUP_SECONDS=${PROBE_WARMUP_SECONDS:-4}
|
||||
@ -37,6 +38,9 @@ REMOTE_ANALYZE=${REMOTE_ANALYZE:-1}
|
||||
REMOTE_ANALYZE_BIN=${REMOTE_ANALYZE_BIN:-/tmp/lesavka-sync-analyze}
|
||||
REMOTE_ANALYZE_COPY=${REMOTE_ANALYZE_COPY:-1}
|
||||
FETCH_CAPTURE=${FETCH_CAPTURE:-0}
|
||||
REMOTE_SERVER_PREFLIGHT=${REMOTE_SERVER_PREFLIGHT:-1}
|
||||
REMOTE_EXPECT_CAM_OUTPUT=${REMOTE_EXPECT_CAM_OUTPUT:-uvc}
|
||||
REMOTE_EXPECT_UVC_CODEC=${REMOTE_EXPECT_UVC_CODEC:-mjpeg}
|
||||
|
||||
mkdir -p "${LOCAL_OUTPUT_DIR}"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
@ -44,6 +48,50 @@ LOCAL_CAPTURE="${LOCAL_OUTPUT_DIR}/lesavka-upstream-av-sync-${STAMP}.mkv"
|
||||
LOCAL_ANALYSIS_JSON="${LOCAL_CAPTURE%.mkv}.json"
|
||||
LOCAL_CAPTURE_LOG="${LOCAL_CAPTURE%.mkv}.capture.log"
|
||||
|
||||
preflight_server_path() {
|
||||
[[ "${REMOTE_SERVER_PREFLIGHT}" != "0" ]] || return 0
|
||||
|
||||
echo "==> verifying Lesavka server path on ${LESAVKA_SERVER_HOST}"
|
||||
ssh ${SSH_OPTS} "${LESAVKA_SERVER_HOST}" bash -s -- \
|
||||
"${REMOTE_EXPECT_CAM_OUTPUT}" \
|
||||
"${REMOTE_EXPECT_UVC_CODEC}" <<'REMOTE_PREFLIGHT'
|
||||
set -euo pipefail
|
||||
expect_cam_output=$1
|
||||
expect_uvc_codec=$2
|
||||
|
||||
read_env_value() {
|
||||
local key=$1
|
||||
local file=$2
|
||||
local value=""
|
||||
value=$(grep -E "^${key}=" "$file" 2>/dev/null | tail -n1 | cut -d= -f2- || true)
|
||||
printf '%s\n' "$value"
|
||||
}
|
||||
|
||||
cam_output=$(read_env_value "LESAVKA_CAM_OUTPUT" /etc/lesavka/server.env)
|
||||
server_uvc_codec=$(read_env_value "LESAVKA_UVC_CODEC" /etc/lesavka/server.env)
|
||||
runtime_uvc_codec=$(read_env_value "LESAVKA_UVC_CODEC" /etc/lesavka/uvc.env)
|
||||
|
||||
printf ' ↪ server.env CAM_OUTPUT=%s\n' "${cam_output:-<unset>}"
|
||||
printf ' ↪ server.env UVC_CODEC=%s\n' "${server_uvc_codec:-<unset>}"
|
||||
printf ' ↪ uvc.env UVC_CODEC=%s\n' "${runtime_uvc_codec:-<unset>}"
|
||||
|
||||
if [[ -n "${expect_cam_output}" && "${cam_output}" != "${expect_cam_output}" ]]; then
|
||||
printf 'expected CAM_OUTPUT=%s but found %s\n' "${expect_cam_output}" "${cam_output:-<unset>}" >&2
|
||||
exit 64
|
||||
fi
|
||||
if [[ -n "${expect_uvc_codec}" && "${server_uvc_codec}" != "${expect_uvc_codec}" ]]; then
|
||||
printf 'expected server.env UVC_CODEC=%s but found %s\n' "${expect_uvc_codec}" "${server_uvc_codec:-<unset>}" >&2
|
||||
exit 65
|
||||
fi
|
||||
if [[ -n "${expect_uvc_codec}" && "${runtime_uvc_codec}" != "${expect_uvc_codec}" ]]; then
|
||||
printf 'expected uvc.env UVC_CODEC=%s but found %s\n' "${expect_uvc_codec}" "${runtime_uvc_codec:-<unset>}" >&2
|
||||
exit 66
|
||||
fi
|
||||
|
||||
systemctl is-active lesavka-server lesavka-uvc lesavka-core >/dev/null
|
||||
REMOTE_PREFLIGHT
|
||||
}
|
||||
|
||||
if [[ "${LOCAL_AUDIO_SANITY}" != "0" ]]; then
|
||||
echo "==> verifying local speaker-to-mic sanity before upstream sync run"
|
||||
"${SCRIPT_DIR}/run_local_audio_sanity.sh"
|
||||
@ -66,6 +114,8 @@ if [[ ! -x "${ANALYZE_BIN}" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
preflight_server_path
|
||||
|
||||
echo "==> starting Tethys capture on ${TETHYS_HOST}"
|
||||
ssh ${SSH_OPTS} "${TETHYS_HOST}" bash -s -- \
|
||||
"${REMOTE_CAPTURE}" \
|
||||
|
||||
@ -10,7 +10,7 @@ bench = false
|
||||
|
||||
[package]
|
||||
name = "lesavka_server"
|
||||
version = "0.14.27"
|
||||
version = "0.14.28"
|
||||
edition = "2024"
|
||||
autobins = false
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user