Publish and subscribe over wss://livekit.uni-wh.de:7800 and refuse cleartext ws://. Conference room is uwh-telhai. Includes the uncommitted encoded H.264 publish path, Rally hairpin, and KMS wall overlay.
78 lines
2.1 KiB
Python
78 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Throwaway: one software-encoder publisher reading cam-01 I420 SHM.
|
|
|
|
Does not open /dev/camNN. Identity spike-sw so it does not kick cam-01.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(ROOT))
|
|
os.chdir(ROOT)
|
|
|
|
from config import load_config # noqa: E402
|
|
from tokens import make_token # noqa: E402
|
|
|
|
SHM_DIR = "/run/livekit-cameras/raw"
|
|
SRC = f"{SHM_DIR}/cam-01.i420"
|
|
LINK = f"{SHM_DIR}/spike-sw.i420"
|
|
|
|
|
|
def main() -> int:
|
|
cfg = load_config()
|
|
if not os.path.exists(SRC):
|
|
print("missing", SRC, file=sys.stderr)
|
|
return 1
|
|
try:
|
|
os.remove(LINK)
|
|
except FileNotFoundError:
|
|
pass
|
|
os.symlink(SRC, LINK)
|
|
cam = {
|
|
"index": 0,
|
|
"identity": "spike-sw",
|
|
"video_device": "/dev/null",
|
|
"audio_card": None,
|
|
"usb_port": "",
|
|
"serial": "",
|
|
"extra_video_devices": [],
|
|
"width": 640,
|
|
"height": 360,
|
|
"token": make_token(cfg.url, cfg.api_key, cfg.api_secret, cfg.room, "spike-sw"),
|
|
}
|
|
os.environ.setdefault(
|
|
"LIVEKIT_LIB_PATH",
|
|
str(ROOT / "native" / "liblivekit_ffi.so"),
|
|
)
|
|
os.environ.setdefault("LIBVA_DRM_DEVICE", cfg.vaapi_device)
|
|
os.environ.setdefault("LIBVA_DRIVER_NAME", "iHD")
|
|
argv = [
|
|
sys.executable,
|
|
str(ROOT / "run_publisher.py"),
|
|
"--cameras-json", json.dumps([cam]),
|
|
"--url", cfg.url,
|
|
"--room", cfg.room,
|
|
"--width", "640",
|
|
"--height", "360",
|
|
"--fps", "30",
|
|
"--bitrate", str(cfg.video_bitrate),
|
|
"--video-codec", "h264",
|
|
"--video-encoder", "software",
|
|
"--vaapi-device", cfg.vaapi_device,
|
|
"--audio-rate", str(cfg.audio_rate),
|
|
"--enhance-mode", "off",
|
|
"--beamform-mode", "off",
|
|
"--video-shm-dir", SHM_DIR,
|
|
"--audio-shm-dir", cfg.audio_shm_dir,
|
|
"--encoder-rss-limit-kb", "99000000",
|
|
]
|
|
os.execv(sys.executable, argv)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|