mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-05-02 03:27:41 +03:00
Stream probe fallback (#22971)
* fall back to tcp transport when rtsp probes fail over udp * tweak wizard message
This commit is contained in:
parent
0a332cada9
commit
8fc1e97df5
@ -711,23 +711,31 @@ def ffprobe_stream(ffmpeg, path: str, detailed: bool = False) -> sp.CompletedPro
|
|||||||
else:
|
else:
|
||||||
format_entries = None
|
format_entries = None
|
||||||
|
|
||||||
ffprobe_cmd = [
|
def run(rtsp_transport: Optional[str] = None) -> sp.CompletedProcess:
|
||||||
ffmpeg.ffprobe_path,
|
cmd = [ffmpeg.ffprobe_path]
|
||||||
"-timeout",
|
if rtsp_transport:
|
||||||
"1000000",
|
cmd += ["-rtsp_transport", rtsp_transport]
|
||||||
"-print_format",
|
cmd += [
|
||||||
"json",
|
"-timeout",
|
||||||
"-show_entries",
|
"1000000",
|
||||||
f"stream={stream_entries}",
|
"-print_format",
|
||||||
]
|
"json",
|
||||||
|
"-show_entries",
|
||||||
|
f"stream={stream_entries}",
|
||||||
|
]
|
||||||
|
if detailed and format_entries:
|
||||||
|
cmd.extend(["-show_entries", f"format={format_entries}"])
|
||||||
|
cmd.extend(["-loglevel", "error", clean_path])
|
||||||
|
return sp.run(cmd, capture_output=True)
|
||||||
|
|
||||||
# Add format entries for detailed mode
|
result = run()
|
||||||
if detailed and format_entries:
|
|
||||||
ffprobe_cmd.extend(["-show_entries", f"format={format_entries}"])
|
|
||||||
|
|
||||||
ffprobe_cmd.extend(["-loglevel", "error", clean_path])
|
# For RTSP: retry with explicit TCP transport if the first attempt failed
|
||||||
|
# (default UDP may be blocked)
|
||||||
|
if result.returncode != 0 and clean_path.startswith("rtsp://"):
|
||||||
|
result = run(rtsp_transport="tcp")
|
||||||
|
|
||||||
return sp.run(ffprobe_cmd, capture_output=True)
|
return result
|
||||||
|
|
||||||
|
|
||||||
def vainfo_hwaccel(device_name: Optional[str] = None) -> sp.CompletedProcess:
|
def vainfo_hwaccel(device_name: Optional[str] = None) -> sp.CompletedProcess:
|
||||||
|
|||||||
@ -415,7 +415,7 @@
|
|||||||
"audioCodecGood": "Audio codec is {{codec}}.",
|
"audioCodecGood": "Audio codec is {{codec}}.",
|
||||||
"resolutionHigh": "A resolution of {{resolution}} may cause increased resource usage.",
|
"resolutionHigh": "A resolution of {{resolution}} may cause increased resource usage.",
|
||||||
"resolutionLow": "A resolution of {{resolution}} may be too low for reliable detection of small objects.",
|
"resolutionLow": "A resolution of {{resolution}} may be too low for reliable detection of small objects.",
|
||||||
"resolutionUnknown": "The resolution of this stream could not be probed. This will cause issues on startup. You should manually set the detect resolution in Settings or your config.",
|
"resolutionUnknown": "The resolution of this stream could not be probed. You should manually set the detect resolution in Settings or your config.",
|
||||||
"noAudioWarning": "No audio detected for this stream, recordings will not have audio.",
|
"noAudioWarning": "No audio detected for this stream, recordings will not have audio.",
|
||||||
"audioCodecRecordError": "The AAC audio codec is required to support audio in recordings.",
|
"audioCodecRecordError": "The AAC audio codec is required to support audio in recordings.",
|
||||||
"audioCodecRequired": "An audio stream is required to support audio detection.",
|
"audioCodecRequired": "An audio stream is required to support audio detection.",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user