Upload Traffic überwachen > wenn zu gering > batch ausführen
-
@SeppJ
Ich nutze aktuell Windows 10 (21H2)
Das wäre natürlich noch besser, wenn ich das einfach mit in die batch Datei schreiben könnte.
Hat jemand eine Idee wie sowas aussehen könnte?Ich bin über jeden Beitrag und Schnipsel, der mich zum Ziel führt, sehr dankbar
Vielen vielen Dank
-
Muss es unbedingt C++ sein?
Im C# Forum gab es kürzlich einen Beitrag über Traffic-Überwachung, das ist doch genau das, was du suchst. Und das .Net Framework bietet dafür schon fertige Klassen an, da musst du nicht noch erste C/C++ Bibliotheken suchen, die du benutzen kannst. In C# sollte das trivial zu lösen sein, wenn man auf Chromleisten und Schnörkel verzichtet.
-
@DocShoe
Mir ist absolut jeder Weg recht
Ich habe für die OBS Streams eigens abgestellte Streaming PCs. Wenn es sein muss würde ich sogar Linux drauf installieren
-
Dann guck mal hier, ob dir das weiterhilft.
-
@dreamer84 sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:
Wäre auch nicht umsonst
Hmmm
-
@DocShoe
kannst du mir mal eine PN schicken?
-
Das war nicht ernst gemeint...
Hast du Programmierkenntnisse/-erfahrung?
-
@DocShoe
Ich hatte mal ein Projekt an einen Raspberry Pi mit Python und eins an einem Arduino mit C++.
Das Prinzip verstehe ich im Ansatz, aber dann hörts leider auch schon auf
Ich bin aber lernfähig
-
Fängt denn OBS Studio von selbst zu streamen an wenn man es startet? Also reicht wirklich das Neustarten des Prozesses, ohne dass man noch irgendwo hin klickt oder ähnliches?
-
@hustbaer
Eigentlich startet es nicht von allein. Ich nutze aber einen Befehl hinter dem Pfad (Ziel), damit der Stream direkt startet wenn ich OBS öffne:
"C:\Program Files\obs-studio\bin\64bit\obs64.exe" --startstreaming
Das funktioniert zu 100% zuverlässig.
Damit dürfte das bloße starten absolut ausreichen.
-
Dafür c++ einzusetzen erscheint mir ein bisschen wie mit Kanonen auf Spatzen zu schießen.
Ich bin kein Powershell Experte und habe mir das gerade zusammen gegoogelt, aber mit so einem Skript könnte das gehen.
$threshold = 1000 $wmi = (Get-WMIObject -Class Win32_PerfFormattedData_Tcpip_NetworkInterface | Select-Object BytesReceivedPerSec).BytesReceivedPerSec $kbytes = $wmi[1] / 1kb #depends on number of network interfaces if($kbytes -le $threshold) { Write-Output $kbytes Write-Host "restart" } else { Write-Output $kbytes Write-Host "all ok" }
Man beachte, dass man, wenn man mehrere Netzwerkinterfaces hat, ein Array zurück bekommt und ich da fest eine 1 rein gedonnert habe um das auf meinem aktuell verbundenen Netzwerkinterface zu testen.
In einer echten Anwendung würde man vlt überprüfen wollen, ob der Upload über mehrere Messungen hinweg zu niedrig ist. Kann ja auch mal andere Gründe haben, als einen zusammengebrochenen Stream.
-
@Schlangenmensch
Hey, vielen Dank schon mal für den Code
Ich hab den jetzt mal getestet bei einem PC ohne Stream spuckt er "0 & restart" aus - das dürfte ja passen.
Auf einemStreaming PC mit einem aktuell laufenden Stream spuckt er aber auch "0 & restart" aus.
Muss ich da noch was einstellen?Echt, danke vielmals für eure Hilfe hier!
-
Vermutlich musst du das BytesReceivedPerSec durch das "Gesendet"-Pendant ersetzen. Du willst dir ja den upload angucken.
-
Da du überhaupt keine Ausgabe hast, hast du wahrscheinlich nur ein Netzwerkinterface, und das
[1]
in Zeile 4 läuft ins Leere.edit: Jetzt hast du es geändert. Als ich geantwortet habe, hattest du noch geschrieben, dass du als Ausgabe "& restart" hättest. Nichtsdestotrotz solltest du genau über den Kommentar zu den mehreren Netzwerkinterfaces nachdenken. Die jetzige Implementierung mit der festen
[1]
ist nicht solide (ich muss bei mir beispielsweise 2 nutzen). Entweder musst du weiter ausholen und irgendwie das richtige Interface bestimmen, oder nimm einfach die Summe über alle Interfaces, wenn du weißt, dass da sonst nichts läuft. Du kannst dir ja mal die Ausgabe von(Get-WMIObject -Class Win32_PerfFormattedData_Tcpip_NetworkInterface | Select-Object BytesReceivedPerSec).BytesReceivedPerSec
angucken, wenn du das so in der Powershell ausführst
-
@DocShoe
Wo finde ich das "Gesendet"Pendant? Was bedeutet das genau?@SeppJ
Sorry, hatte die 0 nur vergessen...
Ich habe auch mal eine 2 eingetragen. Passiert aber nichts anderes.
Ich habe mal einen Screenshot gemacht. Dort sieht man rechts unten, dass OBS einen 6.000er Upload hat:::
-
BytesReceivedPerSec ist doch der Wert für den Empfang, du brauchst aber den Upload-Kanal. Grade google befragt und das sagt mir: BytesSentPerSec.
Guckst du hier.
-
@DocShoe
Macht Sinn...
Hab ich ausgetauscht... bleibt aber trotzdem bei "0 & restart"
-
@DocShoe sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:
Vermutlich musst du das BytesReceivedPerSec durch das "Gesendet"-Pendant ersetzen. Du willst dir ja den upload angucken.
Huch... eigentlich wollte ich das mit
BytesSentPerSec
gepostet haben@dreamer84 wenn es nur ein Interface gibt, kannst du mal versuchen das
[1]
zu löschen. Ich meine irgendwo gelesen zu haben, dass dann kein Array zurück gegeben wird. Aber Achtung: Gefährliches Halbwissen.Edit: Aber auch bei Powershell fangen indizies mit 0 an, also hätte man bei 2 Interfaces
$wmi[0]
oder$wmi[1]
. Wie viele Netzwerkinterfaces man hat, kann man bestimmt auch programmatisch abfragen.Edit2 : Vlt einfach mal
(Get-WMIObject -Class Win32_PerfFormattedData_Tcpip_NetworkInterface | Select-Object BytesSentPerSec).BytesSentPerSec
in der Powershell ausführen und das Ergebnis hier posten
-
@dreamer84 sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:
@SeppJ
Sorry, hatte die 0 nur vergessen...
Ich habe auch mal eine 2 eingetragen. Passiert aber nichts anderes.Nicht rumraten. Du musst das Problem schon selber verstehen und die passende Einstellung für dich finden, das können wir nicht für dich machen. Was gibt denn
(Get-WMIObject -Class Win32_PerfFormattedData_Tcpip_NetworkInterface | Select-Object BytesReceivedPerSec).BytesReceivedPerSec
zurück, während es wie gewünscht läuft?
-
@Schlangenmensch sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:
(Get-WMIObject -Class Win32_PerfFormattedData_Tcpip_NetworkInterface | Select-Object BytesSentPerSec).BytesSentPerSec
Wird gemacht
Ausgabe:
857864Wenn ich den Stream beende kommt das:
748389EDIT:
Ich seh gerade, dass wenn ich den Befehl öfter ausführe, kommt immer ein andere Wert. Moment ich mach mal einen Screenshot...
Das kommt wenn der Stream deaktiviert ist.