#!/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())