Beser skalierender Encoder als Mencoder?

Kamikaze

Warrior of Sunlight
Staff member
Video Encoding zu parallelisieren ist ja ziemlich trivial. Macht aber zumindest mencoder nicht. Das Problem ist, dass sich mencoder auf den Codec verlässt und das funktioniert eben noch nicht so toll, weil der eben nur unabhängige Operationen parallelisieren kann.

Ein viel simplerer und besser skalierender Ansatz (wenn keine Echtzeitanforderungen im Spiel sind) wäre einen Film beim Kodieren in separate Blöcke (an I-Frame Grenzen) zu zerlegen und die dann einfach unabhängig voneinander zu kodieren - jeweils ein Prozess pro Kern und die holen sich ihre Filmschnipsel aus einer Queue. Das sollte besonders bei langen Filmen gut skalieren, selbst bei hunderten von Kernen, so lange genug Speicher vorhanden ist.

Kennt jemand einen Encoder der das so ähnlich macht?
 
Sowas habe ich auch früher mal vorgeschlagen, als der Theora-Encoder noch kein MT konnte. Da ging das sogar sehr einfach, weil man Theora-Videos einfach hintereinander caten kann (obwohl das dann wieder Probleme mit seek macht).

Insgesamt verliert bei so einer Methode natürlich die Flexibilität. Also das Multi-Pass-VBR-Encoding, was die meisten benutzen klappt dann nicht mehr so gut.
 
Eigentlich sollte das auch beim Multi-Pass kein Problem machen. Da kommt ja ein Komplexitäts-Rating raus. Die Begutachtung kann meines Verständnisses nach für jeden Abschnitt separat erfolgen.

Man muss dann nur die durchschnittliche Bitrate für jeden Abschnitt an die Gesamtkomplexität des Abschnitts anpassen, damit der Durchschnitt für den ganzen Film passt.
 
Ffmpeg ist bloß ein Codec. Handbrake agiert auf der richtigen ebene - aber macht es das was ich will? In deren Wiki habe ich auf die Schnelle nur Design-Philosophie-Bla-Bla gefunden. Das ist ja alles schön und gut aber ich wüsste schon gerne was das Ding macht.
 
hi

handbrake nutzt auch einiges von ffmpeg , schau mal gezielt nach HandBrakeCLI

dann solltest du auf eine wiki seite stossen mit den cli paramentern.

und ffmpeg can eigentlich alles
encodieren , decodieren muxxen ........... ich verwende das viel fuer meine
digitalen fernsehen aufnahmen vom vdr.

holger
 
Da sowohl mplayer als auch ffmpeg beides kaum mehr als Frontends für ffmpegs libavcodec sind - schaut euch mal die Sourcen von mplayer und mencoder an, dort steckt ffmpeg komplett drin - nehmen die beiden sich erfahrungsgemäß in Sachen Geschwindigkeit und Qualität kaum was.
 
Ein viel simplerer und besser skalierender Ansatz (wenn keine Echtzeitanforderungen im Spiel sind) wäre einen Film beim Kodieren in separate Blöcke (an I-Frame Grenzen) zu zerlegen

Beim Paket dvd::rip (multimedia/dvdrip) ist ein Cluster-Daemon mit dabei, der genau das macht.

Man definiert Nodes, einen oder mehrere pro Rechner/Prozessor, und der Daemon zerstückelt das in kleine Häppchen, die von jedem Node verarbeitet werden.
Damit kann man nicht nur aktuelle 6 Kerner, sondern ein ganzes Rechner-Cluster beschäftigen.

Blöd ist nur, dass der Port immer wieder arge Probleme hat - grade aktuell: Beim Button "Create new Project" passiert nix und das Ding hängt komplett :rolleyes:
 
Back
Top