Upload Traffic überwachen > wenn zu gering > batch ausführen



  • @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.


  • Mod

    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:::



  • @dreamer84

    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 😉


  • Mod

    @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:
    857864

    Wenn ich den Stream beende kommt das:
    748389

    EDIT:
    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.



  • @SeppJ
    Sorry, so ganz ist mir noch nicht klar, was 0,1 oder 2 dort bewirken - wenn ich nicht mehr weiter komme hilft manchmal auch einfach "learning by doing" 😇



  • @dreamer84 Hast du mal in dem Skript die eckigen Klammern mit der Zahl da drinnen weg genommen und probiert?



  • Ah,
    mir fällt gerade auf, dass ich im Hintergrund noch einen RTMP-Server laufen habe. Ich nehme an, dass der auch Upload entstehen lässt... ich habe das ganze jetzt nochmal auf einem anderen Streaming PC laufen lassen und siehe da... Screenshot
    Wenn der Stream läuft ist die ausgegebene Zahl 6-stellig, wenn er aus ist nur 4-stellig.
    Damit kann man doch was anfangen 😃

    @Schlangenmensch Probier ich mal...


  • Mod

    Dann wissen wir jetzt, dass du nur ein Netzwerkinterface hast. Zumindest auf diesem einen Rechner, in dem Zustand, wie er jetzt im Moment läuft. Ist natürlich so eine Frage, ob das immer so bleibt.

    Der Hintergrundtraffic ist natürlich ein großes Problem. Anscheinend ist der ja um eine ganze Größenordnung höher als der Verkehr durch den Stream. Da können kleine Schwankungen im Hintergrundprozess nicht davon unterschieden werden davon, wenn der Stream komplett zusammen bricht. Wenn du das nicht ändern kannst, dann ist der ganze Ansatz mit dem Netzwerkverkehr hinfällig.



  • @Schlangenmensch
    Hab ich gemacht...
    Komisch, wenn der Stream läuft oder nicht läuft kommen Werte zwischen 200 und 4.000
    Der streamt doch aber laut OBS aber schon mit 5.000 kb/s
    Wie kann das sein?

    Screenshot



  • @SeppJ
    Das bleibt so. Wie gesagt, ich habe die Streaming PCs wirklich nur zum streamen. Ich habe vor, die Stream dort laufen zu lassen und wenn alles läuft muss ich da am besten nie wieder dran 🙂

    Naja, rein logisch gesehen dürfte dort eigentlich gar nicht gesendet werden. OBS (der letzte PC - letzter Screenshot) hat eine RTSP-Quelle. Die sendet ja zum PC hin, also eine Art Download. Raus geht doch eigentlich nur der Upload aus OBS. Versteh ich nicht.

    Screenshot Taskmanager
    Da seh ich jetzt gerade noch, dass ich ja mit RemoteDesktop auf die PC zugreife. Da entsteht natürlich auch Traffic.
    Ich werde das ganze jetzt nochmal direkt am PC und ohne RemoteDesktop testen...
    Ich danke auch an dieser Stelle schon mal mega für eure Zeit - ich probier jetzt mal etwas rum (PCs stehen im Keller) und schreib dann nochmal.


  • Mod

    @dreamer84 sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:

    @Schlangenmensch
    Hab ich gemacht...
    Komisch, wenn der Stream läuft oder nicht läuft kommen Werte zwischen 200 und 4.000
    Der streamt doch aber laut OBS aber schon mit 5.000 kb/s

    Bist du sicher, dass es nicht 5000 k Bit/s sind?



  • So ich hab mal noch etwas rumprobiert und alles ohne RemoteDesktop getestet:
    Bei deaktiven Stream liegt der Traffic bei 1-25. Bei aktiven Stream bei 100-4000.
    Da sind also schon mal Werte mit denen man was anfangen kann.

    Eine Idee hatte ich noch. Wenn ich das Script ausführe gibt er ja nur den aktuell gemessenen Wert zurück. Der schwankt eben sehr stark. Wäre es sinnvoll eine Art Durchschnittswert aus den letzten 10 Sekunden zu errechnen? also 10 Sekunden lang messen und dann eben einen Mittelwert ausgeben? Ich denke diese Zahl wäre sehr viel verlässlicher.

    Wie könnte das aussehen?
    Ich weiß beim Arduino lief das über eine Art "Frequenz Counter". Kann man sowas da mit einbauen?



  • @dreamer84 ja, geht natürlich. Abhängig von der Zeit oder einfach der Durchschnitt von 10 Messungen, oder oder oder.

    Ich bin gerade noch über Get-Counter gestolpert. Damit könnte man vlt abgestimmt auf die Streaming Software Monitoren und hätte damit vielleicht das Problem mit dem Hintergrundrauschen behoben.


Anmelden zum Antworten