neues vom Remote Encoding

  • ich hab grad vorhin meinen Post von fast vor nem Jahr per google entdeckt.
    In der Zwischenzeit hat sich etwas getan:
    * es gibt einen (halbwegs) ordentlichen Server, der die clients koordiniert
    * von beiden Clients gibt es neue Versionen

    Als Quellfiles taugen leider immernoch nur AVIs mit MJPEG oder HuffYuv (oder sonst ein Codec, der
    keine interframecodierung nutzt)
    MPEG2 Quellmaterial ist leider noch nicht vernünftig zu encodieren.
    Mit der aktuellen Version geht MPEG2 Quellmaterial nur mit einem Trick.

    Aber ich hab schon eine prizipielle Verfahrensweise für MPEG2
    Quellmaterial ausgearbeitet:
    * job holen und wenn quelle=MPEG2 dann nächstes Keyframe vor dem Schnitt und nächstes Keyframe
    nach dem Schnitt suchen (z.B. im Mpeg2-Schnitt .idx file) und Offset merken
    * an diesen Keyframes schneiden mit MPEG2-Schnitt oder dessen routinen
    * von Server zugewiesenes Jobfile entsprechend mit dem Startoffset manipulieren
    * encoden und Ergebnis hochladen

    alles wie schon immer über SMB Freigaben.

    Wer schon mal das ohne MPEG2 antesten möchte:
    http://www.stud.tu-ilmenau.de/~mael-ii/

    das wichtigste steht wohl unter "about" ganz unten.
    falls es noch Fragen gibt, einfach hier schreiben.

    MfG
    Ello

  • "falls es noch Fragen gibt, einfach hier schreiben."

    Wie sieht es aus mit PSN&Co Test (http://www.everwicked.com/vqstudio/) zwischen einem Clip der nur auf einem Rechner und einem der per Netzwerkencode komprimiert wurde; natürlich immer auf das Orginal bezogen.

    Wie schnell sollte/muss das Netzwerk sein?

    Wie groß ist der Geschwindigkeitsgewinn?
    (wenn ein Rechner 3 Stunden braucht, wieviel brauchen dann xy viel Rechner (gleiche wie vorne) etwas?)

    Wieviel 'Power' braucht der Server etwas?

    Wieso müssen die Clients mindestens 1.5GhZ flott sein?

    Macht es Probleme wenn die CPU Leistung der einzelnen Rechner sehr unterschiedlich ist?

    Kann man auf einem Rechner einen Server und mehrere Clients laufen lassen?
    (Stichwort: Ausnutzung von Multiprozessor Rechnern)

    Cu Selur

    Ps.: Richtig cool wäre das ganze wenn es funktioniert und man in die Clients einfach ne linux LiveCD reinstecken könnte. Dann könnte man auf Arbeit (oder LANs) einfach über hier und da CDs verteilen udn die Leute fragen ob sie einem nicht was CPU Power geben würden.

  • Zitat von Selur


    Wie sieht es aus mit PSN&Co Test (http://www.everwicked.com/vqstudio/) zwischen einem Clip der nur auf einem Rechner und einem der per Netzwerkencode komprimiert wurde; natürlich immer auf das Orginal bezogen.


    werd ich mal testen. Ich kann nichma abschätzen wie das Ergebnis is.
    Sicher is die Bitratenverteilung etwas suboptimaler, weil ja jeder Encoder nur 1 min Film vom ganzen sieht. Ich behaupte mal, es es nicht im sichtbaren Bereich liegt.

    Zitat von Selur


    Wie schnell sollte/muss das Netzwerk sein?

    normales 100 Mbit. Langsamer geht auch. Der Datendurchsatz durchs Netz begrenzt nur die Kopiergeschwindigkeit.

    Zitat von Selur


    Wie groß ist der Geschwindigkeitsgewinn?
    (wenn ein Rechner 3 Stunden braucht, wieviel brauchen dann xy viel Rechner (gleiche wie vorne) etwas?)

    wenn n Rechner mitrechnen gehts etwa n mal schneller. (vorrausgesetzt alle sind gleich schnell). Verfälscht wird das ganze nur durch die Zeit des Kopierens. Je größer das Verhältnis der Encodierzeit pro Job zur Kopierzeit is umso weniger fällt diese natürlich ins Gewicht.
    Es darf immernur ein Client vom Fileserver (!= Server) kopieren (Belastung für den Fileserver) daher kann es vorkommen, dass die clients mal ein paar Minuten warten müssen. (als Fileserver wird der Rechner, der den Auftrag absetzt geführt)

    Zitat von Selur


    Wieviel 'Power' braucht der Server etwas?

    nicht viel. Er muss ja nur die Aufträge annehmen und verteilen und sich mit den Clients während dem Encodieren über deren Status unterhalten.
    Desweiteren ist noch ein Webserver integriert aber das braucht ja alles nicht viel.

    Zitat von Selur


    Wieso müssen die Clients mindestens 1.5GhZ flott sein?

    Prizipiell spielt es keine Rolle.
    Wir haben das einfach mal so festgelegt. 1,5 GHz sollte ja momentan jeder haben. Geht nur darum, dass nich jemand mit nem Celeron 800 rumgurkt und man am Ende nur auf das eine kleine Stückchen von dem Cel 800 warten muss.

    Zitat von Selur


    Macht es Probleme wenn die CPU Leistung der einzelnen Rechner sehr unterschiedlich ist?

    nö is wurscht. Mach halt der eine 2 Jobs in der Zeit, in der jemand anders nur einen macht. Jeder kleine Beitrag zählt

    Zitat von Selur


    Kann man auf einem Rechner einen Server und mehrere Clients laufen lassen?
    (Stichwort: Ausnutzung von Multiprozessor Rechnern)

    Hmm. Das ist einerseits eine Frage, ob sich die Clients sich gegenseitig in die Quere kommen mit ihren VirtualDubs und ob die VirtualDubs automatisch veschiedenen CPUs zugeorndet werden. Das kann ich grad nicht genau sagen, da ich den Encodingclient nicht entwickelt hab und mich daher im Code nich so gut auskenn.
    Andererseits die Frage, ob der Server damit umgehen kann, wenn mehrere Clients von ein und dem selben Host encoden. Also ob er die Statistik dabei ordentlich mitschreibt. Wenn ich grad nix übersehen hab, sollte das funktionieren.

    Ich stelle mir grad die Frage, wie das in anderen Netzen funktioniert, als bei uns an der Uni. z.B. Netze die keine Nameserver haben.

    Cu Selur

    Zitat von Selur


    Ps.: Richtig cool wäre das ganze wenn es funktioniert und man in die Clients einfach ne linux LiveCD reinstecken könnte. Dann könnte man auf Arbeit (oder LANs) einfach über hier und da CDs verteilen udn die Leute fragen ob sie einem nicht was CPU Power geben würden.

    das ganze basiert auf VirtualDub und den installierten VFW Codecs. Es ist kein Auslagern von Prozessen sondern quasi ein automatisches koordiniertes Aufteilen eines großen Files auf mehrere kleine und verteilen dieser auf mehrere Rechner. In wieweit sich das auf Linux umsetzen lässt is fraglich. Gibt es VD für Linux? Wie schaut es da mit den Codecs aus?
    Der Server und der Encodingclient sind in Delphi geschrieben. Da muss man ma schaun, wie man das portieren kann...

    MfG
    Ello

  • die Codecs sind kein Problem, da kann man ffmpeg nehmen (siehe ffdshow unter windows), VD gibt's nicht,...

    "Netze die keine Nameserver haben"
    Notfalls per IP; aber die meisten Haushalte mit mehreren Vernetzten Rechnern werden wohl auch nen DNS laufen haben.

    "Je größer das Verhältnis der Encodierzeit pro Job zur Kopierzeit is umso weniger fällt diese natürlich ins Gewicht."
    Yup, das mit der Kopierzeit war mir schon klar, ich wollte halt mal wissen wieviel sowas z.B. bei ner DVD so ausmacht. (mit HuffYUV kompremiert wäre die ja recht groß *gig*) Da kommt dann die Frage wann eine kritische Größe erreicht ist bei der nur eine begrenzte Anzahl an flotten Rechnern überhauopt genutzt werden können, weil z.B. der eine immer Fertig ist wenn der andere Gerade erst seine Daten erhalten hat.

    "ob die VirtualDubs automatisch veschiedenen CPUs zugeorndet werden"
    werden sie, zumindest war es so das letzte mal als ich es getestet hatte :)

    Wegen dem Fileserver:
    Reicht es da ne Sambafreigabe zu haben oder muss der noch mehr leisten?
    (hab nen Linux Fileserver, auf dem ich aber für meine Windowskisten ne Sambafreigabe habe, könnte man die nutzen?)
    "(als Fileserver wird der Rechner, der den Auftrag absetzt geführt)" => könnte meinen momentanen Fileserver wohl nicht nutzen,..

    CU Selur

  • Zitat von Selur

    die Codecs sind kein Problem, da kann man ffmpeg nehmen (siehe ffdshow unter windows), VD gibt's nicht,...


    hatte ich aber mal gehört. um platformunabhängiger zu werden währe sicher der mencoder ne Alternative. Leider ists da mit den Filtermöglichkeiten etwas beschrännkter/umständlicher als mit VD.
    Genauso das kopieren...
    Das baut halt alles auf VirtualDub auf. Da etwas zu ändern is etwas umständlich.

    Zitat von Selur


    Yup, das mit der Kopierzeit war mir schon klar, ich wollte halt mal wissen wieviel sowas z.B. bei ner DVD so ausmacht. (mit HuffYUV kompremiert wäre die ja recht groß *gig*) Da kommt dann die Frage wann eine kritische Größe erreicht ist bei der nur eine begrenzte Anzahl an flotten Rechnern überhauopt genutzt werden können, weil z.B. der eine immer Fertig ist wenn der andere Gerade erst seine Daten erhalten hat.


    DVD ham wer noch nich getestet. Ich hab auch schon überlegt die in huffyuv zu komprimieren. Aber das is nich sonderlich schnell. Da währ der Geschwindigkeitsvorteil schnell wieder hin.
    So als Beispiel:
    ein analog gecapturtes video mit MJPEG kopiert der client mit etwas mehr als 200 fps. encoden tut er dann je nach Filter mit 5 - 10 fps.
    Üblicherweise wird immer mit 1 min Stückchen gearbeitet.
    Kopieren hängt wie gesagt nur vom Netz ab.

    Zitat von Selur


    Wegen dem Fileserver:
    Reicht es da ne Sambafreigabe zu haben oder muss der noch mehr leisten?
    (hab nen Linux Fileserver, auf dem ich aber für meine Windowskisten ne Sambafreigabe habe, könnte man die nutzen?)


    Samba sollte freilich auch gehen. Damit die Pfade gleich von Anfang an stimmen macht es sich gut immer gleich mit der Freigabe zu arbeiten:
    also im VD mit \\server\ ... öffnen und auch speichern.

    Zitat von Selur


    könnte meinen momentanen Fileserver wohl nicht nutzen,..


    doch theoretisch schon. Es geht nur darum, dass der Server immer nur _einen_ Auftrag pro Fileserver gleichzeitig rausschickt. Solange das Verhältnis von Auftraggeberrechner und Filerserver immer 1:1 is is das kein Problem. Wenn nun aber mehrere Auftraggeber Aufträge abschicken, die auf ein und dem selben Fileserver liegen, dann kriegt das der Server nicht mit es kommt dazu, dass mehrere Clients von einem Fileserver ziehen.
    Im anderen Falle, wenn ein Auftraggeber mehrere Aufträge verteilt, die auf mehreren Fileservern liegen, kriegt das der Server ebenfalls nicht mit und teilt unnötigerweise Jobs nicht aus, weil er denkt der Fileserver währe grad blockiert. Das alles ist nur eine Funktion um den Fileserver vor massenhaften Zugriffen zu bewahren. Wenn alle nacheinander ziehen gehts wesentlich schneller als wenn 10 Zugriffe gleichzeitig erfolgen und die Platte nur noch am ächtzen ist.

    MfG
    Ello

  • Zitat von Selur

    "falls es noch Fragen gibt, einfach hier schreiben."
    Wie sieht es aus mit PSN&Co Test (http://www.everwicked.com/vqstudio/) zwischen einem Clip der nur auf einem Rechner und einem der per Netzwerkencode komprimiert wurde; natürlich immer auf das Orginal bezogen.


    ich hab mal nen PSNR Test gemacht.
    Das komplette Video sind über 10000 Frames. Da aber der Test recht lange dauerte hab ich nur mal die ersten 500 genommen.
    Auch mit den 500 hat dann OO schon recht lang gebraucht, um die Diagramme zu erzeugen:

    Die PSNR vom verteilt encodeten:
    http://www.stud.tu-ilmenau.de/~mael-ii/files…-stueckchen.pdf

    Die PSNR vom am Stück encodeten
    http://www.stud.tu-ilmenau.de/~mael-ii/files/psnr_am_stueck.pdf

    Die Differenz aus beiden:
    http://www.stud.tu-ilmenau.de/~mael-ii/files/differenz.pdf


    erstaunlich finde ich, dass die PSNR von verteilt encodeten höher ist als die vom normal encodeten. Das würde doch heißen, dass das Bild besser ist.
    Die beiden Dateigrößen stimmen überein. Die Bitrate stimmt.
    Encodet wurde selbstverständlich mit den gleich Einstellungen.

  • hi,

    ich bin der andere Coder.

    Selur
    Im Moment kann nur ein VD laufen da DivX seine Logdatei noch in C:\ ablegt. Ich hab schonmal versucht die im Temp-Verzeichnis abzulegen aber das ging nicht richtig.

    Wenn ich das hinkrieg sollte es machbar sein mit mehreren Clients oder sinnvolllerweise mit einem Client der mehrere Aufträge ensprechend der CPUs annimmt.

    Aber im Moment drängen wohl erstmal unsere Prüfungen *g*

  • Das mit dem PSNR ist wirklich erstaunlich und erfreulich. Das der verteilt encodete Teil einen höheren durchschnittlichen PSNR Wert hat sagt zwar nicht groß etwas aus, aber das bei der Differenz anscheinend der verteilte fast immer besser scheint ist schon positiv. (Allerdings wirft das bei mir den Gedanken an, ob was mit der internen Kontrolle von Xvid nicht stimmt, aber das ist ne andere Geschichte.)

    "Wenn ich das hinkrieg sollte es machbar sein mit mehreren Clients oder sinnvolllerweise mit einem Client der mehrere Aufträge ensprechend der CPUs annimmt."
    Das wäre defenitiv cool. :)

    Cu Selur

  • ähm nix XVid. Bei dem Test hab ich DivX 5.2 genommen.
    Die Szene war auch nicht sehr Actionreich.
    Wennde magst kann ich auch noch eine mit mehr Bewegung encoden. Auch mit XVid...

  • "ähm nix XVid. Bei dem Test hab ich DivX 5.2 genommen."
    Oh, irgendwie übesehen, trotzdem merkwürdig. ;)

    Ihr habt aber auch 2pass encoding verwendet oder war es nur 1pass encoding?

    "Wennde magst kann ich auch noch eine mit mehr Bewegung encoden. Auch mit XVid..."
    Der Wille ist da, nur hab ich momentan nur ein System auf dem Windows läuft, auf allen anderen läuft momentan Gentoo. (werd wohl erst in 2 Wochen oder so noch Windows auf einigen der anderen Systeme noch zusätzlich installieren :) )
    Falls also wer anders die Zeit&Ressourcen hat wäre es cool, wenn er es mal mit Xvid antesten könnte.

    Cu Selur

  • natürlich 2-pass

    ich habs zum Testen auch nur auf einer Maschine gemacht. Quelle war n AvisynthScript.
    Ich hab einfach nen Auftrag an den Server geschickt (um den Job zu Splitten) und dann die einzelnen Jobfiles per Hand ausgeführt. Warn ja nur 6 Stück.
    Als Pfad einfach die Adminfreigaben genommen.

    Ich mach ma nen Test...

Jetzt mitmachen!

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