VideoClip erstellen



  • Seehr geehrte Programmierer,

    Ich möchte mir im eine Simulation schreiben und das ergebnis dann als ViedeoClip ausgeben. Dabei beschränke ich miene Arbeit auf die Konsole in C++

    Bisher ist es mir gelungen Bitmaps zu erstellen:

    const int headeroffset = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
        const int scanlineWidth = ((PICWIDTH * 3) + 3) & ~3;
        const int padding = scanlineWidth - PICWIDTH * 3;
    
    	const BITMAPFILEHEADER fileHeader = 
        {
            ('B' | ('M' << 8)),
            headeroffset + hight * scanlineWidth,
            0,
            0,
            headeroffset
        };
    
        const BITMAPINFOHEADER fileInfoHeader = 
        {
            sizeof(BITMAPINFOHEADER), 
            width, 
            hight * -1, 
            1, 
            24, 
            BI_RGB, 
            width*hight*3 , 0, 0, 0, 0
        };
    
        /* BitmapFileHeader */
        fileStream.write(reinterpret_cast<const char*>(&fileHeader), sizeof(fileHeader));
    
        /* BitmapInfoHeader */
        fileStream.write(reinterpret_cast<const char*>(&fileInfoHeader), sizeof(fileInfoHeader));
    
    			for(int y = 0 ; y < hight ; ++y){
    				for(int x = 0 ; x < width ; ++x){
    					int Grey = (int) (...);            //erstellen des Farbtons
    					const char bgr[]={(char)Grey,(char)Grey,(char)Grey} ;		//schreiben des Farbtons
    					fileStream.write(reinterpret_cast<const char*>(bgr), sizeof(bgr));
    				}
    			const char filler[4] = {};											//Beenden der Zeile
    			fileStream.write(filler, padding);
    			}
    
        fileStream.close();
    

    Diese Bitmaps möchte ich gerne zu einem kleinen Film zusammenschreiben, allerdings habe ich keine ahnung wie. Das Format ist mir dabei so ziehmlich egal, und auf komprimiereung kann ich auhc vollkommen verzichten

    vielen Dank im Voraus



  • Dann würde ich versuchen eine unkomprimierte .avi Datei zu erstellen. Da müsste man die Bitmaps vermutlich einfach aneinanderreihen, wie der Header allerdings genau aussieht, weiß ich auch nicht. Google hilft vielleicht, falls du die Möglichkeit hast eine uncompressed .avi zu erstellen (Sony Vegas kann das zB.) kannst du dir diese ja auch mal in einem HexEditor angucken.



  • Hier wird erklärt wie man ein AVI Video erstellt:

    http://www.wischik.com/lu/programmer/avi_utils.html



  • VergissEs schrieb:

    AVI Video erstellt

    Es gibt keine AVI-Videos. AVI ist ein Container, der Codec spielt bei dieser Sache die Rolle!



  • @EOutOfResources
    Also wird wenn ich die AVI Abspiele kein Video gezeigt ?



  • VergissEs schrieb:

    Also wird wenn ich die AVI Abspiele kein Video gezeigt ?

    Dateien mit dem Postfix .avi enthalten Videodaten in einem, im Header bestimmten, Codec. Demzufolge kann man AVI-Dateien gar nicht abspielen, sondern ihren Inhalt. Und dabei wird auf MPEG-4 und ähnliches gesetzt.



  • Ok jetzt habe ich es gerafft:

    AVI kann man nicht abspielen und sind keine Videos nur den Inhalt des AVI Containers kann Video und Sound enthalten. Also wenn ich DAU nun eine AVI Datei auf meinen Rechner haben und diese in einem Player abspiele sehe ich gar nicht das Video sonder den Inhalt der AVI Datei und dieser wird dann erst zu einem Video beim Abspielen.

    Also das heißt, im gegenzug eine Videokamera erstellt keine Videos nur der Datenträger (Container) auf dem das Video gespeichert wird ist ein Video und wenn das wiederum eine AVI Datei ist, dann ist es ja sozusagen ein Speichercontainer der eine AVI-Datei enthällt der wiederum ein Container ist für die Videodaten.



  • http://lmgtfy.com/?q=avi

    erster Treffer -> lesen -> verstehen.



  • moah noch so einer!

    Ist Heute der Wortreiterei Tag?



  • Vielen Dnak die teilweise hilfreichen bemerkungen,

    der Link von Wischik war recht hilfreich, allerdings hab ich mit MS Visual Studio 2010 Probleme das zu Compelieren, sogar eine überarbeitete Version von Nyffenegger http://www.adp-gmbh.ch/win/programming/avi_examples/index.html hat nicht funktioniert.

    kann mir da jemand helfen



  • ChartaLusor schrieb:

    Nyffenegger http://www.adp-gmbh.ch/win/programming/avi_examples/index.html hat nicht funktioniert.

    Das kann doch gar nicht funktionieren weil wir ja nun Wissen das AVI kein Video ist und somit "Creating AVI movies with C++ [examples]" nicht klappen kann 😮



  • EOutOfResources schrieb:

    Demzufolge kann man AVI-Dateien gar nicht abspielen, sondern ihren Inhalt.

    Diese Formulierung halte ich nicht für sinnvoll.

    Ich sag auch nicht "ich geh mir jetzt das Bild das mein Fernseher aus dem decodierten Inhalt des Video-Streams im TS Container im VIDEO_TS Verzeichnis einer DVD macht angucken".

    Ich sag "ich geh jetzt DVD gucken".

    Ich halte letzteres für ausreichend genau, und viel praktischer.

    Aber jeder wie er meint.



  • Mittlerweile hab ich ne klasse gefunden, allerdings gibt es da auch probleme

    #define WMFORMAT_SDK_VERSION WMT_VER_8_0
    
    #pragma comment(lib,"wsock32.lib")
    
    #include <tchar.h>
    #include <iostream>
    #include <Windows.h>
    
    #include "CreateWMV\wmvFile.h"
    
    using namespace std;
    
    void main(){
    
    	CwmvFile wmvFile((L"wmvFile.wmv"), WMProfile_V80_384PALVideo, 1);
    
    	return;
    }
    

    die Klasse die ich dazu nutze habe ich gefunden unter : http://www.codeproject.com/KB/graphics/createmovie.aspx

    beim Kompelieren sagt er mir:
    Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall CwmvFile::~CwmvFile(void)" (??1CwmvFile@@QAE@XZ)" in Funktion "_main". C:\Users\Charta Lusor\documents\visual studio 2010\Projects\Avi files\Avi files\Avi files.obj Avi files

    Fehler 2 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall CwmvFile::CwmvFile(wchar_t const *,struct _GUID const &,unsigned long)" (??0CwmvFile@@QAE@PB_WABU_GUID@@K@Z)" in Funktion "_main". C:\Users\Charta Lusor\documents\visual studio 2010\Projects\Avi files\Avi files\Avi files.obj Avi files

    Fehler 3 error LNK1120: 2 nicht aufgelöste externe Verweise. C:\Users\Charta Lusor\documents\visual studio 2010\Projects\Avi files\Debug\Avi files.exe 1 1 Avi files

    kann mir da jemand weiterhelfen?



  • Tjoa, du hast wohl vergessen, dass man auch die .lib/.cpp Datei einbinden muss 😕


Anmelden zum Antworten