DivX-(Mpeg4)-Shrinker ?

  • Hallo Profies, :seher: und Programmierer,

    ich dachte mir schon lange warum keine Mpeg4-Shrinker ...?
    sicherlich technisch schwierig, doch auch Unmöglich ?

    Mein Gedankengang dazu ist:
    1-paas Kodierung mit festem Qualitätsmass:
    Das ist Schneller als 2-pass und mir kommt es ja auf die Qualität an und nicht primär um irgendeinen Speicherplatz zu füllen.
    - Und wenn's dann mal ein paar MB zuviel sind ... shrinken ?
    (Hier statt 2-pass)

    Dazu nach ein paar Fragen nach Erfahrungswerten:
    Ich lasse zur Zeit GK mit ca. 0.252 Bits/(Pixel*Frame) laufen ...
    (kritik darann? ;D )
    Welchen Qualitätsmaß entspricht das? bzw. wo kann ich das als Qualität einstellen und ggf. im 1-pass durchrennen lassen ....
    und welche Nachteile nehme ich damit in Kauf?
    (außer die exakte Größe erst danach zu wissen!)

    Einen frühen Gruß (6:40 Uhr) und heute noch ein süßes Leben ;)

  • :welcome:

    So wie es für MPEG-2 bereits "Compressed Domain Transcoder" gibt, dürfte es grundsätzlich wohl nicht unmöglich sein, vergleichbares auch bei MPEG-4 herzustellen. Im Grunde gab es so was schon in Ansätzen: Das Speichern von Bewegungsvektoren aus dem 1st-pass zur Weiterverwendung im 2nd-pass (jedoch war das Verhältnis zwischen Debuggingaufwand und Geschwindigkeitsgewinn bei XviD irgendwann zu schlecht geworden).

    Für DivX 5 oder XviD mit H.263-Quantisierung mag die "spezifische Bitrate" von ~ 0,25 bppf wohl für sehr gute Qualität genügen, Qualitätsfanatiker gehen aber gerade bei XviD mit MPEG- oder Custom-Matrix meist noch etwas höher...

    Im 1st-pass wird bei XviD mit stabilem Quantisierungsfaktor von 2 gerechnet (für I/P-Frames). Mit Hilfe des "CompCheck" kannst du abschätzen, wie stark das Video im Verhältnis zum Ergebnis mit QF=2 noch komprimiert werden müsste, um auf deine gewünschte Größe zu kommen. Bei DivX ab 5.0.3 jedoch wird der 1st-pass mit konstanter Bitrate durchgeführt und "von der Mitte weg" optimiert, statt "von oben herunter".

  • siehe auch:
    http://forum.gleitz.info/showthread.php?t=15005

    =>Theoretisch sehe ich schon, dass das was Du vorher in deinem Shrinking-Schritt vor hast gehen kann, jedoch müsstest Du einiges an Informationen sammeln und die entsprechend verwerten und mit ein paar cleveren Heuristiken bekommt man wahrscheinlich auch ordentliche Ergebnisse. Jedoch ist dies sehr umständlich und ich vermurte, dass der spätere Shrinkingaufwand zu hoch und qaulitativ zu unstabil ist als das man ihn sinnig verwenden kann.

    Wenn man ein Team von 4-6 guten Programmierern, die sich mit Mpeg4 auskennen, jede Menge Statistiken usw. über Quantizer&Größen hat, dann könnte man wahrscheinlich durchaus soetwas in nem halben Jahr schafffen.
    (davon ausgegangen die Testen und Programmieren den ganzen Tag)

    Realistisch gesehen, wird sich das aber wahrscheinlich keine Firma antuen, da es sehr gut sein kann, dass wenn man nicht auf genügendgute Heuristiken kommt:

    1. das Shrinken&Co auch nicht schneller ist als ein 2pass Verfahren
    2. man nicht annähernd an die Qualität eine 2pass Verfahrens drann kommt

    Zu bedenken ist auch, dass der 1st pass den man machen müsste einiges langsamer wäre als ein normaler 1st pass von Xvid, da man einige Features nicht deaktiviert lassen könnte und mehr an Informationen Sammeln müsste. (siehe Wissenswertes rund um Xvid, analoges sollte auch für DivX gelten) => um schneller als ein aktuelles 2pass Verfahren zu sein müssten die Heuristiken die man verwendet wirklich clever sein.

    Ein, meiner Ansicht nach, viel sinnigeres Projekt, wäre es da sich zu überlegen einen ordentlichen Mpeg4 Encoder zu schreiben, der eine oder mehrere Grafikkarten unterstützt und einen Teil der Rechnungen der Grafikhardware überlässt. Richtig gemacht sollte dies das Encoden beschleunigen und qualitativ gut sein.

    Cu Selur

    Ps.: siehe auch: http://forum.doom9.org/showthread.php?s=&postid=530566

  • Ich könnte mir schon vorstellen, dass beim Design von MPEG4 auch darauf geachtet wurde, dass soetwas wie CDT auch funktionieren kann, was ja auch sinnige Anwendungsfelder in der Praxis hat (Realtime Transcoding für TV).

    Nur hat das bisher noch niemand implementiert. Bei MPEG2 hats ja auch eine Weile gedauert, bis Transcoder aufkamen.

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Gut jetzt weis ich schon einwenig mehr! ;D
    (Aber muß sicherlich das Ganze noch ein-zweimal Durchlesen)

    Zurück zu meinem eigentlichen Ziel:
    (Bei Super-Qualität bleibe ich bei mpeg2)
    Wenn ich rumrechne will ich einigermaßen komprimieren!
    doch die 700MB-CD-Grenze ist auch bei mir durchbrochen
    (und mein Xoro ist gerade mein Maß um auch mal 10 Stunden Film auf eine Scheibe zu bekommen.)

    Doch finde ich es Blöde die Sache von der Gesamtgröße bzw. Bitrate anzugehen, eine akzeptable Qualität ist doch eigentlich das Ziel ?!

    Somit möchte ich zuerst Bildbreite, dann Höhe (bzw. BildVerhältnis) einstellen. Danach über Interlaced entscheiden, BildQualität und dann die Tonwert einstellen. Dabei ist mir zuerst die Dateigröße nicht wichtig; doch könnte aber zur Orientierung überschlagen angegeben werden. Wenn ich Material gleicher Quelle habe (was durch DVB oft der Fall ist!) könnte ich durch Zwei / Drei Settings durchaus auskommen.

    Dr.DivX konnte ich einwenig 'bescheißen'; unter anderem die Frameanzahl aus dem temporären Jobfile löschen und so dies als Vorlage für mehrere Files nehmen! Doch ich möchte das gerne mit Xvid und kontrolliert machen!

    Bei Dr.DivX kann ich ja sogar noch irgendwie auf die Grafen der Kompression zugreifen. (Aber hab?s nicht ausgetestet.) Doch das ist ja noch mal eine andere Sache.

    Wie komme ich so einer Lösung näher?
    Kann ich irgendwie z.B. mit QF=1,3 das Ganze durchlaufen lassen ...
    Und eigentlich müsste dies doch im schnelleren 1-pass-Verfahren gehen!


    Gruß und Süßes Leben :cool: !

  • Auch nach mehrmaligen Lesen, kann ich beim besten willen nicht feststellen, was der Text dort oben aussagen soll. Was genau willst Du eigentlich wissen bzw. machen?

    Du kannst mit XviD qualitätsbasiert umwandeln. Bedeutet, es wird ein fester Quantizer (Quantisierung = Verlust beim encoden) angegeben, und der Codec ermittelt selbstständig die benötigte Bitrate, um die Bedingung zu erfüllen.
    Am besten nutzt Du GK nur zum schneiden der Ränder + Bestimmung der Zielauflösung, bei geringst möglichen Aspect Error und setzt dich danach mit AviSynth, VirtualDubMod und XviD direkt auseinander.

    Gruss,
    Viperzahn

    Es ist zu einer gesellschaftsfaehigen Unsitte geworden, dass jeder etwas von sich geben muss, auch wenn er keinerlei Ahnung hat. Und wer vielleicht mal 30 Sekunden nachdenkt, bevor er etwas sagt, dem wird weniger geglaubt als jemanden, der sofort gutklingenden Muell von sich gibt.
    -> http://people.freenet.de/dynamischerpha…esse_halten.mp3

  • > Auch nach mehrmaligen Lesen, kann ich beim besten willen nicht
    > feststellen, was der Text dort oben aussagen soll. Was genau willst Du
    > eigentlich wissen bzw. machen?

    Ja? Danke!
    Ich habe vielleicht auch zuviel in den Beitrag reingepackt
    muß das Ganze dann nochmal formulieren:
    In der form GK4DVB .... in ein / zwei Tagen dann !! ....

    Guten Morgen Welt !!

  • Zitat

    Dr.DivX konnte ich einwenig 'bescheißen'; unter anderem die Frameanzahl aus dem temporären Jobfile löschen und so dies als Vorlage für mehrere Files nehmen!


    Dies ist definitiv nicht emfpehlenswert, da es den ganzen Sinn aus dem 2pass encoding nimmt.

    Zitat

    Bei Dr.DivX kann ich ja sogar noch irgendwie auf die Grafen der Kompression zugreifen.


    Ja, bei Divx kann man die Bitrateverteilung manipulieren, vergleichbares geht bei Xvid mit Stasviewern.

    Zitat

    Kann ich irgendwie z.B. mit QF=1,3 das Ganze durchlaufen lassen ...


    Sicher geht das, 1pass quality Encode auf einer entsprechend hohen quality.

    Cu Selur

    Ps.: bin mir auch nicht 100% sicher ob ich alles richtig interpretiert habe was Du willst ;)

  • Zitat von Selur

    Dies ist definitiv nicht emfpehlenswert, da es den ganzen Sinn aus dem 2pass encoding nimmt.


    Geht aber nach meinen Tests mit 2fach ganz gut und merkte keinen Unterschied im Verfahren! ....


    Zitat von Selur


    Sicher geht das, 1pass quality Encode auf einer entsprechend hohen quality.


    Dabei ist mir die GK-Angabe Bits/Pixel am liebsten! Die Andern muß ich erst noch testen! (und erfühlen :D


    Zitat von Selur


    Ps.: bin mir auch nicht 100% sicher ob ich alles richtig interpretiert habe was Du willst ;)

    Darum habe ich ausführlicher beschrieben von was ich in diesem Sinne träume : http://forum.gleitz.info/showthread.php?p=118214#post118214

    Shrinken so um 5 % wäre da ja nur das Sahnehäupchen :cool:

    Danke für die Antworten; nach neuen Test gibts sicher nochmal genauere Fragen !

  • Sahnehäubchen wie MPEG4-Recodierung gibt's aber bis heute noch nicht (nur eine Diskussion darüber). Man könnte höchstens partiell recodieren, schneiden und zusammenfügen. Oder lässt gleich vorher ein paar MB reserve, in die man dann noch Codecs und Player packen könnte.

Jetzt mitmachen!

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