TCPDeliver - TCPServer - TCPSource

  • Leider noch nicht, hab mich zwar dafuer interessiert, aber keine Zeit gefunden. Haette ja uebers Netzwerk genuegend Rechner zur Verfuegung, von daher waere es schon witzig. Ich frage mich nur wie sinnvoll es in meinem Fall ist relativ kleine Rechner miteinzubeziehen (Celeron 600/1GHz Athlon/PIII 800).

  • Irgendwie klappt das mit dem TCPdeliver bei mir nicht.

    Ich habe 2 Pcs und will die Encodinglast dementsprechend verteilen.
    Wie muss ich mein Script jetzt verändern damit übers Netzwerk encoded wird?
    Muss auf dem anderen PC auch irgendein Programm im Hintergrund laufen und muss die Videosource auch dort abgelegt werden?

    Bsp:
    ------------------
    v = mpeg2source("video.d2v")

    a = v.trim.crop.resize
    b = a.smoothen.sharpen

    return(b)
    ------------------

    Mein Ziel war es, dass Teil a von einem Rechner und Teil b vom einem anderen Rechner encodiert werden sollte. Aber bei mir kommt immer nur eine Fehlermeldung. Ich weiss aber auch nicht genau wie ich TCPsource und TCPserver handhaben soll. Das Beispiel hier LINK verstehe ich irgendwie nicht. :grübeln:

  • Zitat

    Mein Ziel war es, dass Teil a von einem Rechner und Teil b vom einem anderen Rechner encodiert werden sollte.


    Dann ist TCPDeliver eigentlich der falsche Ansatz, da hier die Quelle 'Packetweise' aufgeteilt wird. Heißt der PC der den Server stellt schickt Packete an die anderen raus, welche von denen dann abgearbeitet werden.

    Wenn Du zwei PCs A, B hast, PC A mit der IP 192.168.0.10, PC B mit der IP 192.168.0.11 und die Orginaldaten liegen auf PC A.


    Dann sollte das bei A etwa so aussehen:
    v = mpeg2source("video.d2v").crop.resize.smoothen. .... . sharpen
    TCPServer(v, 113) # öffnet einen Serverport auf der 113, etweilige Firewalls sollten für den Port deaktiviert werden

    bei PC B sieht es dann so aus:
    TCPSource("192.168.0.10",113)

    Cu Selur

  • Habs zum laufen gebracht, jedoch habe ich wenn überhaubt gerademal einen Geschwindigkeitsschub von 1 Frame gehabt.

    So wie ich das jetzt verstanden habe, schickt PC A(TCPServer ), die in AVisynth fertig gerenderten Bilder, zum PC B(TCPsource). Dieser muss sie nur noch encoden!? Liege ich da richtig?

    Allerdings müsste es so ja auch nicht viel bringen:
    PC A - schickt daten
    v = mpeg2source("video.d2v").crop.resize.smoothen. .... . sharpen
    TCPServer(v, 113)

    PC B - encodet
    TCPSource("192.168.0.10",113)

    Bei diesem Script hängt die Geschwindigkeit ja allein davon ab, wie schnell PC A die Datein in AVIsynth rendert und sie anschließend rüberschickt.

    Edit:
    So, hab ein wenig weiter experementiert :D
    Diesmal habe ich das so verwirklicht, wie ich es schon von Anfang an wollte.

    PCA
    v = mpeg2source("video.d2v").crop.resize.smoothen
    TCPServer(v, 113)

    PCB
    TCPSource("192.168.0.10",113,"LZO")
    v = v..... . sharpen
    TCPServer(v, 114)

    PCA
    TCPSource("192.168.0.11",114,"LZO")

    PC A hat einen Dualcore Prozessor. Jedoch waren bei beiden PCs (A und B) die CPU Auslastung bei ~35%.
    Was ich sehr komisch finde. Die Encoding-Geschwindigkeit hat sich dementsprechend nur sehr wenig erhöht.
    Es gab aber kurzzeitig Phasen bei dem die CPU Auslastung bei 100% (besser gesagt 50% beim Dualcore) und die Frames/s schossen von 3-4 auf 6-7 frames/s. Die Netzwerkauslastung lag bei unter 10%
    Meine Vermutung ist, dass Windoofs TCP irgendwie nicht "ersnt" nimmt und so nicht genügend Prozessorleistung rausrückt.

  • Zitat

    Liege ich da richtig?


    im Prinzip: Ja

    Bei deinem 2ten Versuch liest A die Orginal Daten, dann croppt, resized und smoothed er die, schickt sie an B, der die Daten dann nochmal irgendwie bearbeitet und wieder an A schickt. (Wollteste das so?)

    Zitat

    Meine Vermutung ist, dass Windoofs TCP irgendwie nicht "ersnt" nimmt und so nicht genügend Prozessorleistung rausrückt.


    Halte ich für unwahrscheinlich. ;)

    Cu Selur

  • Aber es ist doch trotzdem sehr merkwürdig, dass die CPU Anzeige bei 35% ist.
    Wenn ich mit Vdub "normal" encode, dann steht Die CPU auf 100%. Aber wenn ich in Vdub das Video + TCP öffne dann und an den anderen PC schicke, dann kommen keine 100% zustande. Woran könnte es denn dann liegen? An TCP?

  • Das Problem wird wahrscheinlich die Verzögerung sein, die Du konstruiert hast dadurch, dass Du etwas wegschickst, es dann woanders verarbeitest, wieder zurück schickst und dann erst wieder etwas machst.

    D.h. PC A nimmt Rohdaten R1 resized&co diese, schickt sie zu PC B und wartet nun bis es von PC B die Antwort bekommt, dass alles da ist, erhält es die Antwort wird es wieder etwas (R2) zu B schicken. B ist aber noch dabei R1 abzuarbeiten und schickt dann erstmal R1 zu PC A, der dann R1 encoded.
    => Das Hin- und herschicken und das Wartena uf Antworten verzögert den Prozess. ;)

    Cu Selur

  • Das könnte es natürlich sein :ja:
    Hmm, ich hab noch einen 1GHz Rechner. Mit diesem könnte man diese Verzögerung doch umgehen!? Die beiden schnelleren PCs schicken ihre Daten zum 1GHz Rechner und dieser encodet nur. Jetzt muss ich mir nur noch ein zweites Netzwerkkabel besorgen um das mal zu testen :D

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!