MPEG/MJPEG verlustfrei rotieren

  • Folgendes Problem: Ich habe etliche Videos, die mit einer Digicam hochkant aufgenommen wurden, also um 90° gedreht sind. Sie sind im Format MJPEG. Nach meinem Verständnis müsste es möglich sein, diese Videos verlustfrei in 90°-Schritten zu rotieren. MJPEG ist m.W. fast dasselbe wie ein Haufen JPEGs in einem AVI-Container, d.h. man müsste ohne Weiteres die Position und Orientierung der Blöcke umwandeln können. Kennt jemand ein Tool, das das kann?


    Oder ist es möglich, die Frames des MJPEG-AVIs verlustfrei in eine Serie von JPEG-Bildern zu konvertieren ("Speichern als Bilder" der meisten Programme decodiert und codiert neu), diese verlustfrei zu rotieren (können etliche Programme) und daraus wieder verlustfrei ein Video zusammenzubauen?

  • Um 180° Drehen geht vielleicht verlustfrei, das das Decoded und wieder encoded wird sollte keine Probleme machen, wenn man auch verlustfreies Jpeg (Jpeg-LS) benutzt.


    Willste den das avi als MJpeg Archivieren?


    Würde sonst vorschlagen:
    Avi mit Avisynthscript öffnen und drehen und dann in ein anderes verlustfreies Format bringen.


    Cu Selur

  • MJPEG sollte genau wie JPEG verlustfrei in 90-Grad-Schritten rotiert werden können (außerdem auch horizontal oder vertikal gespiegelt).


    Ein Weg das zu erreichen ist, das Video als einzelne JPEG-Bilder zu speichern, dann verlustfrei zu drehen und die gedrehten Bilder wieder zu einem MJPEG-Video zusammenzufassen. Das Trennen und Zusammenführen sollte z.B. mit
    https://sourceforge.net/projects/almara/
    machbar sein; für das verlustfreie Drehen der Bilder kann man (glaube ich) XnView oder IrfanView verwenden.


    Ganz verlustfrei funktioniert die Sache aber nur, wenn bestimmte Bedingungen erfüllt sind; wenn ich mich recht erinnere, müssen Höhe und Breite durch 8 teilbar sein.

    bb

  • Danke für die Antworten.


    Um 180° Drehen geht vielleicht verlustfrei

    Ich bin mir wie bb ziemlich sicher, dass alle 90°-Schritte und beide Spiegelungen verlustfrei gehen.


    Zitat

    das das Decoded und wieder encoded wird sollte keine Probleme machen, wenn man auch verlustfreies Jpeg (Jpeg-LS) benutzt.

    Bis zum Wiederencodieren ist es dann verlustfrei, was ja keine Kunst ist. Man kann ja jedes Video als Folge von PNG/BMP/TIFF speichern.


    Zitat

    Willste den das avi als MJpeg Archivieren?

    Eigentlich schon, ja.


    Zitat von bb

    für das verlustfreie Drehen der Bilder kann man (glaube ich) XnView oder IrfanView verwenden.

    IrfanView ist zwar ein geniales Programm, kann aber nur manuell verlustfrei rotieren, im Batchbetrieb geht nur Rotation von decodierten Bildern. :rolleyes:
    Danke für den almara-Link, das sieht genau danach aus, was ich suche :) (scheint nur noch reichlich beta zu sein).


    Zitat

    Ganz verlustfrei funktioniert die Sache aber nur, wenn bestimmte Bedingungen erfüllt sind; wenn ich mich recht erinnere, müssen Höhe und Breite durch 8 teilbar sein.

    Ja, das ist klar.

  • tach auch !

    1.) Der ThreadTitel ist falsch:
    MPEG<> MJPeg.

    Natürlich kannst Du Dir das Geraffel mit den Einzelbildern antun.
    In AVisynth ist es aber auch schnell und elegant gelöst.

    www.avisynth.org (Deutsche Flagge klicken) und ein bischen Lesen.
    Hier im Board gibt es unter Suchen:
    "Video drehen" mindestens 10 Threads in denen auch Avisynth Scripte enthalten sind.

  • Naja, prinzipiell sollte es genauso mit MPEG gehen (würde mich auch interessieren).


    Danke für Deine Antwort, aber ein Video zu rotieren ist nun wirklich kein Problem, ob mit oder ohne Avisynth. Hab ich schon zigmal gemacht. Die Frage war aber nach verlustfreiem Rotieren.

  • Mit den diversen MPEG-Varianten dürfte ein verlustfreies Drehen nicht hinzubekommen sein. Die I-Frames ähneln zwar JPEG-Bildern bzw. MJPEG-Frames, aber mit den P- und B-Frames und den Bewegungsvektoren usw. wird alles viel komplizierter. Von Interlacing will ich gar nicht reden (die Digitalkamera nimmt höchstwahrscheinlich progressives MJPEG-Video auf).


    bergh : Mit AviSynth geht's nicht, weil die Frames dekomprimiert werden und folglich wieder neu komprimiert werden müssen. Ein verlustbehaftetes Drehen geht auch ganz einfach mit VirtualDub.


    Sweeeet : ändere bitte den Titel


    bb

  • tach auch !

    bb
    Das es neu komprimiert werden muß habe ich vorausgesetzt.

    O.K. Bei der EinzelbilderVariante könnte man die Pixel mit Koordinatentransformation einfach verschieben.
    Aber bei Bilder > Video wird auch neu komprimiert, wo soll also der Vorteil liegen?


  • bergh,


    man kann
    1. verlustfrei MJPEG Video in JPEG-Bilder umwandeln,
    2. JPEG-Bilder verlustfrei drehen und spiegeln (compressed domain algorithm),
    3. verlustfrei aus JPEG-Bildern wieder ein MJPEG-Video erstellen.


    Der Vorteil ist halt, dass es verlustfrei geht, d.h. ohne Neukompression.


    bb

  • Lieber LigH, Ich habe zu informationen über zwei module verlinkt, die aus einem MJPEG Video jedes Frame als Jpeg extrahiert(also eine neue Datei erzeugen, einen header schreiben und dann die Framedaten reinschreiben und das für jedes Frame) und ein weiteres, was genau das umgedrehte macht(aus den datein die eigentlichen Bilddaten raus nimmt und in eine AVI Datei schreibt, wo es noch die benötigten Frame und Riff tags setzt). Wo siehst du da was von unkomprimierten Videos oder Bildern? :mad:


    PS: Nacht, ich gehe jetzt schlaf(hatte Nachtschicht).

    AC-Sama(Robert Vincenz)
    (werde für das -Chan zu alt :zunge: )

  • Ich möchte hier nochmal nachhaken, da ich vor das selbe Problem stehe- ein Ixus Filmchen zu drehen.


    Ich habe Almara installiert und das AVI mit mjpeg2jpegs erfolgreich in Einzelbilder zerlegt.


    Das verlustfreie Rotieren mit Irfanview ging auch sehr einfach ( i_view32.exe *.jpg /jpg_rotate=(3,0,1,0,0,0,0,0) ).
    Damit werden möglichst wenige Änderungen ausser der Rotation durchgeführt (z.B. keine Optimierung).


    Mit jpegs2mjpeg ließ sich dann auch eine AVI aus den gedrehten Bildern (einschließlich Ton) erstellen. Das resultierende AVI aber macht nur Probleme:
    - die Farben sind verfälscht, es gibt auch Schatten die im Verlauf des Filmchens offensichtlich sind. Als Anlage ist das erste Frame als Einzelbild (00000001.jpg) und als AVI Capture (nero_capture.jpg) beigefügt.
    - das AVI ist fehlerhaft und lässt sich nur mit Nero Showtime abspielen. Der Windows MP bricht ab, IrfanView und AviDemux frieren ein und VDub gibt die angefügte Fehlermeldung heraus, die vielleicht einen Hinweis gibt.


    Gibt's Hilfe dazu? Oder existieren inzwischen andere Möglichkeiten eine MJPEG AVI verlustfrei zu drehen?


    G
    (Gute Nacht erstmals)