mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-05-09 06:55:28 +03:00
add timeout and tcp fallback for rtsp urls only
This commit is contained in:
parent
008e74a091
commit
89adab265f
@ -807,10 +807,15 @@ async def get_video_properties(
|
|||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
async def probe_with_ffprobe(
|
async def probe_with_ffprobe(
|
||||||
url: str,
|
url: str,
|
||||||
|
rtsp_transport: Optional[str] = None,
|
||||||
) -> tuple[bool, int, int, Optional[str], float]:
|
) -> tuple[bool, int, int, Optional[str], float]:
|
||||||
"""Fallback using ffprobe: returns (valid, width, height, codec, duration)."""
|
"""Fallback using ffprobe: returns (valid, width, height, codec, duration)."""
|
||||||
cmd = [
|
cmd = [ffmpeg.ffprobe_path]
|
||||||
ffmpeg.ffprobe_path,
|
if rtsp_transport:
|
||||||
|
cmd += ["-rtsp_transport", rtsp_transport]
|
||||||
|
cmd += [
|
||||||
|
"-rw_timeout",
|
||||||
|
"5000000",
|
||||||
"-v",
|
"-v",
|
||||||
"quiet",
|
"quiet",
|
||||||
"-print_format",
|
"-print_format",
|
||||||
@ -879,6 +884,12 @@ async def get_video_properties(
|
|||||||
if not has_video or (get_duration and duration < 0):
|
if not has_video or (get_duration and duration < 0):
|
||||||
has_video, width, height, fourcc, duration = await probe_with_ffprobe(url)
|
has_video, width, height, fourcc, duration = await probe_with_ffprobe(url)
|
||||||
|
|
||||||
|
# last resort for RTSP: try TCP transport, since default UDP may be blocked
|
||||||
|
if (not has_video or (get_duration and duration < 0)) and url.startswith("rtsp://"):
|
||||||
|
has_video, width, height, fourcc, duration = await probe_with_ffprobe(
|
||||||
|
url, rtsp_transport="tcp"
|
||||||
|
)
|
||||||
|
|
||||||
result: dict[str, Any] = {"has_valid_video": has_video}
|
result: dict[str, Any] = {"has_valid_video": has_video}
|
||||||
if has_video:
|
if has_video:
|
||||||
result.update({"width": width, "height": height})
|
result.update({"width": width, "height": height})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user