Wie exportiert man AVI?



  • Wie leicht ist es einen AVI zu exportieren, wenn man folgendes hat:

    - MSVC++2005
    - MFC
    - eine Bitmap-Klasse von der Uni
    - eine copy-Funktion dieser Klasse

    Ich müsste irgendwie frameweise die Bilder irgendwohin kopieren, wohl in eine Klasse, die AVI speichern kann. Wie speichert man dann? Unkomprimiert dürfte kein Problem sein, aber wie siehts mit Komprimierung / Codecs aus? Es geht erstmal darum zu wissen, wie leicht sowas ist. Lohnt sich der Aufwand, oder soll ich das lieber vergessen? Denn viel Zeit habe ich nicht mehr.



  • http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_avifile_functions_and_macros.asp

    Ich habe damit mal einen Entpacker geschrieben.
    Wenn du schon Vorwissen mit der WinAPI, insbesondere die Bitmapheader, hast, dann ist es wohl in ein paar Tagen erledigt.



  • Hmmm, ne das wird zu lange. Ich habe höchstens 1 oder 2 Tage Zeit dazu. Dann muss ich die Funktion streichen.



  • Was macht den die Bitmapklasse?

    gibt diese dir schon das einzelne Bild in den Pixeln zurück?

    Hast du:

    Bitmapfileheader
    Bitmapinfoheader
    RGBquad array

    ????

    Habe ich das richtig verstanden, dass du eine Videodatei erstellen willst?



  • Etwas Hintergrund: Meine Software (Diplomarbeit) nimmt Daten einer 3D Kamera an und visualisiert sie. Während des Realtime-Capturings hätte ich gerne eine AVI-Export Funktion, ist aber nur optional. Die Daten werden in einer von der Uni bereitgestellten Bitmap.dll gezeichnet. Einige der Funktionen:

    - Create
    - LoadFromDisk
    - SaveToDisk
    - SetPixel(x,y)
    - spezielles wie EnableDisplay, SetBufferPointer, GetBitsPerPixel etc.

    Keine Ahnung, was man davon nutzen kann. Aber wie gesagt, ist nur optional. Ich werds wohl weglassen.



  • also als erstend musst du einmal schauen dass du den Videostream bekommst.

    hierzu kann vcielleicht diester Link ganz nützlich sein:

    http://www.codeproject.com/useritems/VideoImageGrabber.asp

    Ich weiss nicht wie esmit einer 3d Kamera funktioniert, aber ich habe ungefähr schon einmal das gleiche mit einer Webcam gemacht.

    Wenn du das so machst wie in dem Link beschrieben, dann bekommst du Bitmapfileheader, bitmapoinfoheader und den "data".

    In data stehen dann alle RGB Informationen, d.h. Infos zu den einzelnen Pixeln.

    Mit
    CreateFile(filename,GENERIC_READ | GENERIC_WRITE,(DWORD)0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL)

    und

    WriteFile( hf,&pBuffer, BufferSize, &Written, NULL );

    kannst du dann eine bmp-Datei erzeugen

    //--- EDIT ----------------------------------------------------------------

    Was vielleicht auch ganz nützlich sein kann sind die Beispile von den Platform SDK im VideoStream Ordner

    vieleicht kannst du auch einmal die Bitmapklasse irgendwie veröffentlichen, dass man sie sich anschauen kann.

    Und was verstehst du unter einer

    AVI-Export Funktion

    ???
    Willst du den Videostream in einem Fenster anzeigen?



  • Nein, die Kamera ist nicht wie eine Webcam. Sie bietet nur Rohdaten, aus denen ich Grauwerte und Distanzinfos herausziehen kann. Sie sendet keinen Stream. Ich müsste also von der Bitmap-Ausgabe meiner bitmap.dll in die AVI-Datei (kein AVI-Fenster). Aber das wird jetzt zu speziell.



  • Such doch mal nach einem Kommandozeilentool, was aus mehreren bmps eine avi erstellen kann. Damit wäre der Zeitaufwand realistisch. f'`8k

    Gruß, TGGC (\-/ returns)



  • libavifile oder so ähnlich. Damit bekommt man so etwas schnell hin.

    Ansonsten nimm einfach mencoder


Anmelden zum Antworten