JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Video in DirectX9 einbinden

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
philipp_boeing
JLI'ler


Alter: 34
Anmeldedatum: 26.07.2003
Beiträge: 188

Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 18:26    Titel: Video in DirectX9 einbinden Antworten mit Zitat

Hi,

wie kann ich ein Video mit der Endung *.rm in eine Vollbild Application einbinden, sodass es abgespielt wird (am besten vergrößert). Und man es mit ESC abbrechen kann.

MfG

Philipp Böing
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 19:51    Titel: Antworten mit Zitat

Sowas mach ich zwar selten, aber hier aus meinem Testprojekt:
Code:
#include <windows.h>
#include <dshow.h>
#include <stdio.h>


// Anwendungsfenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance);

//Callback Funktion zur Nachrichtenbehandlung
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);


// Das Fensterhandle
HWND hWnd = 0;



    IGraphBuilder *pGraph = NULL;
    IMediaControl *pControl = NULL;
   IMediaSeeking *lpSeeking = NULL;
    IMediaEventEx   *pEvent = NULL;
   LONGLONG Pos= 0;
   bool done=false;






int WINAPI WinMain(HINSTANCE hInstance,      // Handle der Programminstanz
                   HINSTANCE hPrevInstance,  // Handle der letzten Instanz
                   LPSTR lpCmdLine,          // Kommandozeile
                   int nCmdShow)             // Art wie das Fenster angezeigt werden soll
{
   

   // Fenster erzeugen und Handle speichern
    hWnd = CreateMainWindow(hInstance);

    // Wenn der Rückgabewert 0 ist, ist ein Fehler aufgetreten
    if(0 == hWnd)
    {
        MessageBox(0,"Fenster konnte nicht erzeugt werden","Fehler",MB_OK);
        return 0;
    }

   // Struktur, in der Informationen zur Nachricht gespeichert werden
    MSG msg;
   
    // Diese Schleife läuft bis die Nachricht WM_QUIT empfangen wird
   while(true)
   {
    if(PeekMessage(&msg,0,0,0,PM_REMOVE))
        {
            TranslateMessage(&msg);
           DispatchMessage(&msg);
   
            if(WM_QUIT == msg.message)
            {
                break;
            }
        }
   else {






if(done==false)
{
    // Initialize the COM library.
    HRESULT hr = CoInitialize(NULL);
    if (FAILED(hr))
    {
        printf("ERROR - Could not initialize COM library");
        return 0;
    }

    // Create the filter graph manager and query for interfaces.
    hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                        IID_IGraphBuilder, (void **)&pGraph);
    if (FAILED(hr))
    {
        printf("ERROR - Could not create the Filter Graph Manager.");
        return 0;
    }


    hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
    hr = pGraph->QueryInterface(IID_IMediaEventEx, (void **)&pEvent);
   hr = pGraph->QueryInterface(IID_IMediaSeeking,
                                 (void **)&lpSeeking);

   pEvent->SetNotifyWindow((OAHWND)hWnd, WM_APP, 0);




   LPCWSTR Filename =L"E:\\Videos\\Video1.avi";
   IBaseFilter *pSource1;
   IPin *pPin;
   pGraph->AddSourceFilter(Filename,Filename,&pSource1);
   pSource1->FindPin(L"Output", &pPin);
   pGraph->Render(pPin);


   done = true;
}


       

long    evCode, param1, param2;
    HRESULT h;

        h = pEvent->GetEvent(&evCode, ¶m1, ¶m2, 0);
       
        pEvent->FreeEventParams(evCode, param1, param2);
      if(evCode)
      lpSeeking->SetPositions(&Pos, AM_SEEKING_AbsolutePositioning , NULL, AM_SEEKING_NoPositioning);



         // Run the graph.
        pControl->Run();


      }
    } // Big else


    pControl->Release();
   lpSeeking->Release();
    pEvent->Release();
    pGraph->Release();
    CoUninitialize();

   return 0;
}








HWND CreateMainWindow(HINSTANCE hInstance)
{
    WNDCLASSEX wndClass;                                   // WNDCLASSEX Struktur
 
    // Struktur initialisieren
    wndClass.cbSize        = sizeof(WNDCLASSEX);           // Größe angeben (nie vergessen!)
    wndClass.style         = CS_DBLCLKS | CS_OWNDC |
                             CS_HREDRAW | CS_VREDRAW;      // Standard Stile
    wndClass.lpfnWndProc   = MessageHandler;               // Die Callback Funktion angeben

    wndClass.cbClsExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
    wndClass.cbWndExtra    = 0;                            // Zusätzliche Angaben, wird nicht benötigt
    wndClass.hInstance     = hInstance;                    // Anwendungsinstanz

    wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);  // Weisser Pinsel
    wndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);  // Normaler Cursor
    wndClass.lpszMenuName  = NULL;                         // Das Fenster hat kein Menü
    wndClass.lpszClassName = "WindowClass";                // Der Name der Klasse
    wndClass.hIcon         = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo
    wndClass.hIconSm       = LoadIcon(NULL, IDI_WINLOGO);  // Windows Logo

    RegisterClassEx(&wndClass);

    return CreateWindowEx(NULL,                   // Keine erweiterten Stile nutzen
                          "WindowClass",          // Klassenname
                          "Hello Windows",        // Fenstertitel
                          WS_OVERLAPPEDWINDOW |   // Fenster
                          WS_VISIBLE,             // Eigenschaften
                          0, 0, 400, 300,         // Anfangsposition und Größe
                          NULL,                   // Handle des Elternfensters
                          NULL,                   // Handle des Menüs
                          hInstance,              // Anwendungsinstanz
                          NULL);                  // wird nicht benötigt
}


// Diese Funktion wird von Windows aufgrufen, wenn eine Nachricht
// für Ihr Programm vorliegt
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    // testen, um welche Nachticht es sich handelt
    switch(msg)
    {
        // wenn das Fenster geschlossen wird, eine Nachricht senden,
        // die das Programm beendet
        case WM_DESTROY:
                    PostQuitMessage(0);
                    return 0;
                break;       
    }

    // Wenn wir uns nicht um die Nachricht gekümmert haben
    // wird sie an die Standardnachrichtenverarbeitung von Windows
    // geschickt
    return (DefWindowProc(hwnd, msg, wParam, lParam));
}


_________________
The source of all power is in its destiny...


Zuletzt bearbeitet von TheMillenium am 20.08.2003, 21:01, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
philipp_boeing
JLI'ler


Alter: 34
Anmeldedatum: 26.07.2003
Beiträge: 188

Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 20:50    Titel: Antworten mit Zitat

TheMillenium hat Folgendes geschrieben:

Code:
h = pEvent->GetEvent(&evCode, ¶m1, ¶m2, 0);


An der stelle kommt bei mir immer 'ne Fehlermeldung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 21:01    Titel: Antworten mit Zitat

Nein es heißt:
Code:
h = pEvent->GetEvent(&evCode, ¶m1, ¶m2, 0);

Mist das ist hier ein Fehler vom Board...Sad

Ok vielleicht so:

h = pEvent->GetEvent(&evCode, & param1, & param2, 0);
natürlich die Leerzeile nach & löschen.
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
philipp_boeing
JLI'ler


Alter: 34
Anmeldedatum: 26.07.2003
Beiträge: 188

Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 21:14    Titel: Antworten mit Zitat

Jetzt kommt folgender Fehler:

main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _IID_IMediaSeeking
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _IID_IMediaEventEx
noch#.obj : error LNK2001: Nichtaufgeloestes externes Symbol _IID_IMediaControl
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _CLSID_FilterGraph
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _IID_IGraphBuilder

MfG

Philipp Böing
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 21:17    Titel: Antworten mit Zitat

Tausch mal unter dem Linker alles mit dem hier aus:
Code:
Strmiids.lib Quartz.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
philipp_boeing
JLI'ler


Alter: 34
Anmeldedatum: 26.07.2003
Beiträge: 188

Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 21:48    Titel: Antworten mit Zitat

... was soll ich nur machen?

--------------------Konfiguration: irgendwas - Win32 Debug--------------------
Linker-Vorgang läuft...
LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
Debug/irgendwas.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

irgendwas.exe - 2 Fehler, 0 Warnung(en)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 22:07    Titel: Antworten mit Zitat

Du sollst eine Win32 Anwendung erstellen und keine Konsolenanwendung.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 20.08.2003, 22:46    Titel: Antworten mit Zitat

Falls du noch Probleme haben solltest:
http://www.newevolution.de/Media.rar
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
philipp_boeing
JLI'ler


Alter: 34
Anmeldedatum: 26.07.2003
Beiträge: 188

Medaillen: Keine

BeitragVerfasst am: 21.08.2003, 08:43    Titel: Antworten mit Zitat

OK, es klappt jetzt bei mir,

nur wie kann ich das Video vergrößern, mit ESC überspringen und... in eine Vollbild application einbinden Question

Aber schon mal Danke, ihr habt mir sehr geholfen

MfG

Philipp
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Grafik und Sound Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum