AVI abspielen Frage



  • Hallo,

    muss man eigentlich um am Anfang ein AVI abspielen zukönnen DirectShow benutzen?? ich finde es sehr aufwendig (bin zu blöd) um nur ein AVI abzuspielen.
    Kann man nicht einfach API benutzen??

    Wenn man das Programm anmacht soll am Anfang, sofort nach dem starten der EXE (D3D wurde initialisiert), ein video abgespielt werden.

    oder kann mir jemand ein gutes Tutorial empfehlen, wo geschrieben steht, wie man ein AVI abspielt, ohne das ein anderes Fenster dazu geöffnet wird, was das D3D Fenster minimieren lässt (was mein Problem ist).

    Danke im voraus!



  • mich wuerde auchmal interessieren, wie ich ein einfaches avi-video abspielen kann...



  • Hi.
    Schau mal, vielleicht kann dir das hier weiter helfen: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=35
    Ist zwar ien Tutorial für OpenGL, aber da das laden der AVI eigentlich nicht mit OpenGL zu tun hat, solltest du es einfach konvertieren können.

    cu
    Squolly



  • ich habe es jetzt schon mit dem directShow hinbekommen, war garnicht so schwer..
    aber kann mir jemand erklären wie ich aus einem char* ein LPCWSTR mache? oder const unsigned short* ??

    Vielen Dank!



  • für alle die es interessiert:

    WCHAR*  wfile;
        int length;
    
        length = strlen(file)+1;
        wfile = new WCHAR[length];
        MultiByteToWideChar(CP_ACP, 0, file, -1, wfile, length);
        g_pGraphBuilder->RenderFile(wfile, NULL);
    


  • hm... irgendwie hab ich jetzt immernoch null plan wie ich am einfachsten n avi einfügen kann...





  • Der Aufbau eines AVI ist recht simpel - Du könntest theoretisch jedes Einzelbild auslesen und darstellen wie du willst -> z.B auch als animierte Textur auf einem Direct3D oder OpenGL gerenderten Poly. (Siehe NeHe's Beispiel)
    Ich habe mal irgendwo einen Qbasic Source zum Anzeigen der Einzelbilder gefunden und sogar damit wars wirklich einfach. Schau mal bei www.wotsit.org nach dem Format. Und wenn dir das zu viel Arbeit is, dann nimm halt DirectShow.



  • Hallo nochmals,

    ich habe es jetzt mit DirectShow gemacht, habe aber folgendes Problem:
    Das Video wird Richtig abgespielt, aber danach ist ein Fenster im Hintergrund, das das DirectX Fenster zum flackern bringt. Scheint was mit dem Video zutun zuhaben, obwohl ich das Video an mein DX Fenster binde..

    code:

    void playMovie(char* filename)
    {
        IMediaEvent   *pEvent;
    
      // Create the filter graph manager.
      CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, 
                                         IID_IGraphBuilder, (void **)&pGraph);
    
      pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
      pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVidWin);
        pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
    
        WCHAR*  wfile;
        int length;
    
        length = strlen(filename)+1;
        wfile = new WCHAR[length];
        MultiByteToWideChar(CP_ACP, 0, filename, -1, wfile, length);
        pGraph->RenderFile(wfile, NULL); 
    
      //Set the video window.
      pVidWin->put_Owner((OAHWND)g_HWnd);
      pVidWin->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS);
    
      RECT grc;
      GetClientRect(g_HWnd, &grc);
      pVidWin->SetWindowPosition((800/2)-(320/2), (600/2)-(240/2), 320, 240);
    
      pMediaControl->Run();
    
        // Wait for completion. 
      long evCode;
      pEvent->WaitForCompletion(INFINITE, &evCode);
    }
    

    danach geht dann das Programm an.. aber es flackert irgendwas durch, was nicht passiert, wenn man das video nicht abspielt.

    😕

    [ Dieser Beitrag wurde am 07.02.2003 um 12:27 Uhr von personenkult editiert. ]



  • please help 😕


Anmelden zum Antworten