Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

11.06.2009, 18:22

DVD per DirectShow abspielen

Hallo zusammen!

Ich bin seit einiger Zeit auf der Suche nach einer Möglichkeit eine DVD auf einer Textur abzuspielen. Im Internet bin ich dabei mehrmals auf folgenden Code gestoßen zum Abspielen in einem Fenster. Wollte dann erstmal das ausprobieren, bevor ich sowas besonderen mache:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
CoCreateInstance(CLSID_DvdGraphBuilder,NULL,CLSCTX_INPROC_SERVER,IID_IDvdGraphBuilder,(void**)&m_pDVDGraph);

AM_DVD_RENDERSTATUS sRenderStatus;
m_pDVDGraph->RenderDvdVideoVolume(L"E:\\VIDEO_TS\\VTS_05_0.IFO",0,&sRenderStatus);
m_pDVDGraph->GetFiltergraph(&m_pGraph);
    
m_pDVDGraph->GetDvdInterface(IID_IDvdControl2,(void**)&m_pDVDCtrl);
m_pDVDGraph->GetDvdInterface(IID_IDvdInfo2,(void**)&m_pDVDInfo);

m_pGraph->QueryInterface(IID_IMediaControl,(void**)&m_pCtrl);


Die Erstellung des Filtergraphen funktioniert auch, aber leider wird nicht weiter beschrieben, wie das ganze dann abgespielt wird. Wenn ich es mit IDvdControl2::PlayChapter versuche, bekomme ich die Fehlermeldung VFW_E_DVD_INVALIDDOMAIN. Mit IMediaControl::Run wird der Film zwar kurz gestartet, aber nach ein paar Sekunden stürzt das Programm ab (Fenster ist weiß und reagiert nicht mehr). Der Returncode ist S_FALSE.

Mit dem Debuger komme ich nicht weit - nach Initalisierung der DVD-Interfaces erscheint ein Fenster "Please turn off system debugger and run again".

Kennt jemand von euch ein guten Tutorial zu dem Thema oder weiß vielleicht selbst, wie man eine DVD per DirectShow abspielen - und eventuell auch in eine Textur bekommen - kann?

Angeblich gibt es auch ein DirectShow-Beispiel im SDK dazu. Aber das kann ich weder im Sample-Browser noch per manueller Suche finden.

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

2

12.06.2009, 00:23

Please turn off system debugger and run again

das hatte ich auch schonmal. die nachricht kommt von dem codec
weil der nicht von dem debugger untersucht werden will. in den neusten
versionen sollte das abgeschafft sein, wie es bei mir der fall war.
also einfach einen neuen codec installieren. kann sein das der deshalb
auch abstürtzt.

das abspielen auf einer textur wird sowohl in davids buch, als auch im
directx sdk behandelt (beides mit source). ein blick darauf wird sich
sicherlich lohnen
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

3

12.06.2009, 17:56

Vielen Dank für die Antwort!

Das Neuinstallieren des Codec hat tatsächlich die Probleme behoben.

Kannst du mir sagen, wie das Beispiel im DirectX-SDK heißt?
Denn ich kann es im Sample-Browser nicht finden.

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

4

13.06.2009, 15:59

Zitat von »"DirectX Software Development Kit"«


What Happened to DirectShow? I can't find it in the DirectX SDK.

DirectShow was removed from the DirectX SDK as of April 2005. You can obtain the headers, libraries, tools, and samples for DirectShow in the Windows® Software Development Kit (formerly known as the Platform SDK).


da hab ich das teil auch nicht gefunden :D irgentwo im netz ist aber
dazu ein beispielcode.
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

13.06.2009, 18:16

Zitat von »"Maddin"«

Kannst du mir sagen, wie das Beispiel im DirectX-SDK heißt?


DirectShow ist schon lange nichtmehr Teil von DirectX, deswegen wirst du im Sample Browser auch nix dazu finden...

DS gehört zum Plattform SDK...

6

13.06.2009, 19:09

Vielen Dank für eure Antworten!

Zitat von »"dot"«


DirectShow ist schon lange nichtmehr Teil von DirectX, deswegen wirst du im Sample Browser auch nix dazu finden...

DS gehört zum Plattform SDK...


Das wusste ich nicht - bisher habe ich auch nur selten mit DirectShow gearbeite.

Mittlerweile habe ich mir ein altes SDK runtergeladen. Ich kann die Beispiele zwar nicht kompilieren, aber es hat mir vorerst geholfen. Werde mir dann bei Gelegenheit nochmal die aktuellen Beispiele des PSDK anschauen.

Werbeanzeige