From 5594051433947a2a52a741be103b6f8dd564bdc4 Mon Sep 17 00:00:00 2001 From: prgmitchell <86465454+prgmitchell@users.noreply.github.com> Date: Mon, 24 Jun 2024 14:46:23 -0400 Subject: [PATCH] network: Check max recommended bitrate from service This adds a warning if the maximum recommended video bitrate from the selected service has been exceeded. --- checks/network.py | 25 +++++++++++++++++++++++++ loganalyzer.py | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/checks/network.py b/checks/network.py index 390ea76..48c16dd 100644 --- a/checks/network.py +++ b/checks/network.py @@ -100,3 +100,28 @@ def checkStreamDelay(lines): if (len(delayLines) > 0): return [LEVEL_INFO, "Stream Delay", "Stream Delay may currently be active. This means that your stream is being delayed by a certain number of seconds. If this is not what you intended, please disable it in Settings -> Advanced -> Stream Delay."] return None + + +def checkServiceRecommendations(lines): + maxBitrate = None + for i, line in enumerate(lines): + if "User is ignoring service bitrate limits." in line: + for j in range(i + 1, len(lines)): + if "video bitrate:" in lines[j]: + maxBitrateMatch = re.search(r'video bitrate:\s+(\d+)', lines[j]) + if maxBitrateMatch: + maxBitrate = int(maxBitrateMatch.group(1)) + break + break + + if maxBitrate is not None: + for i, line in enumerate(lines): + if "bitrate:" in line and "video bitrate:" not in line: + currentBitrateMatch = re.search(r'bitrate:\s+(\d+)', line) + if currentBitrateMatch: + currentBitrate = int(currentBitrateMatch.group(1)) + if currentBitrate > maxBitrate: + return [LEVEL_WARNING, "Max Video Bitrate Limit Exceeded", + f"Current bitrate {currentBitrate}kbps exceeds max video bitrate limit {maxBitrate}kbps. " + "This may result in the streaming service not displaying the video from your stream or rejecting it entirely."] + return None diff --git a/loganalyzer.py b/loganalyzer.py index c73ad0a..bfe276f 100755 --- a/loganalyzer.py +++ b/loganalyzer.py @@ -184,7 +184,8 @@ def doAnalysis(url=None, filename=None): checkPortableMode(logLines), checkSafeMode(logLines), checkSnapPackage(logLines), - checkMacPermissions(logLines) + checkMacPermissions(logLines), + checkServiceRecommendations(logLines) ]) messages.extend(checkVideoSettings(logLines)) m = parseScenes(logLines)