Handle wrapped go2rtc stream URLs

This commit is contained in:
2026-08-03 00:27:48 +02:00
parent 26e042d2d7
commit 73b302a965
2 changed files with 78 additions and 15 deletions
+43
View File
@@ -35,6 +35,30 @@ class DiscoveryMappingTest(unittest.TestCase):
self.assertEqual(urls, ["rtsp://camera-a.example.test:554/Streaming/Channels/101"])
self.assertEqual(self.bridge.CameraControlBridge.hosts_from_urls(urls), ["camera-a.example.test"])
def test_wrapped_go2rtc_stream_resolves_inner_camera_url(self):
camera_cfg = {
"ffmpeg": {
"inputs": [
{"path": "rtsp://127.0.0.1:8554/stream-a"},
]
}
}
streams = {
"stream-a": [
"ffmpeg:rtsp://camera-a.example.test:554/Streaming/Channels/101?profile=main#hardware",
]
}
urls = self.bridge.CameraControlBridge.camera_candidate_urls("camera-a", camera_cfg, streams)
self.assertEqual(
urls,
[
"rtsp://camera-a.example.test:554/Streaming/Channels/101?profile=main#hardware",
],
)
self.assertEqual(self.bridge.CameraControlBridge.hosts_from_urls(urls), ["camera-a.example.test"])
def test_direct_ffmpeg_path_is_used_without_go2rtc(self):
camera_cfg = {
"ffmpeg": {
@@ -49,6 +73,25 @@ class DiscoveryMappingTest(unittest.TestCase):
self.assertEqual(urls, ["rtsp://camera-b.example.test:554/cam/realmonitor?channel=1&subtype=0"])
self.assertEqual(self.bridge.CameraControlBridge.hosts_from_urls(urls), ["camera-b.example.test"])
def test_wrapped_direct_ffmpeg_path_is_used_without_go2rtc(self):
camera_cfg = {
"ffmpeg": {
"inputs": [
{"path": "ffmpeg:rtsp://camera-b.example.test:554/cam/realmonitor?channel=1&subtype=0#video=copy"},
]
}
}
urls = self.bridge.CameraControlBridge.camera_candidate_urls("camera-b", camera_cfg, {})
self.assertEqual(
urls,
[
"rtsp://camera-b.example.test:554/cam/realmonitor?channel=1&subtype=0#video=copy",
],
)
self.assertEqual(self.bridge.CameraControlBridge.hosts_from_urls(urls), ["camera-b.example.test"])
def test_direct_path_wins_when_loopback_is_also_present(self):
camera_cfg = {
"ffmpeg": {