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

Mr_Funstick

Frischling

  • »Mr_Funstick« ist der Autor dieses Themas

Beiträge: 8

Beruf: Schüler

  • Private Nachricht senden

1

10.01.2008, 18:41

Problem beim Video Abspielen mit tbVideo

Hallo zusammen,

Ich hab ein Problem beim Abspielen von Videos, obwohl ichs genau so gemacht hab wie im Buch erklärt. Also wenn ich ne .wmv-Datei nehm schmierts mir mit ner schönen Fehlermeldung ab aber das liegt vermutlich daran das das Format nicht unterstützt wird oder so!

kP, ich Probiers mit ner .avi-Datei! Und plötzlich kommt die Fehlermeldung "Debugger detected - Please close it down and restart!

Windows NT users: Please note that....."

So, dann start ich mal das Programm nicht vom Visual Studio aus sondern direkt weil da läuft dann ja kein Debugger. Programm startet .... und spielt das Video in einem neuen Fenster ab! Warum das jetzt bitte? Kennt jemand von euch das Problem? Das passiert übrigens sobald ich
Video->Play(FALSE):
aufrufe, die anderen Schritte brauch ich gar nicht! :-) Sollte doch eingentlich in der Textur landen oder muss ich da noch extra was einstellen?

Danke im Voraus für eure Hilfe.

MFG Mr_Funtick

Bugger

Frischling

Beiträge: 66

Wohnort: Bezirk Freistadt

Beruf: EDVO HTL Schüler

  • Private Nachricht senden

2

13.01.2008, 00:40

Zitat

.... und spielt das Video in einem neuen Fenster ab!


Das heißt dann wohl das der DirectX Standartfilter und nicht der von der TriBase zum Einsatz kommt.


Zitat

Video->Play(FALSE):
aufrufe, die anderen Schritte brauch ich gar nicht!


Das soll wohl ein Witz sein :?

Übrigends, was steht in der Logdatei :?:
Hältst du nicht den Bug in Ehren, wird er dich noch manches Lehren.

Ein Gespräch setzt voraus, dass der andere Recht haben könnte.

Mr_Funstick

Frischling

  • »Mr_Funstick« ist der Autor dieses Themas

Beiträge: 8

Beruf: Schüler

  • Private Nachricht senden

3

13.01.2008, 18:34

Zitat

Das heißt dann wohl das der DirectX Standartfilter und nicht der von der TriBase zum Einsatz kommt.

Klingt eigentlich logisch. Jetzt muss ich nur noch herausfinden warum! Aber danke schon mal für den Tipp.

Zitat

Das soll wohl ein Witz sein Confused

Das war eher so gemeint das ich Aufrufe wie
Video->Process();
Video->NextFrame();
auskommentieren kann und das Ergebnis bleibt gleich. Ein Objekt anlegen und Video->Init(<PFAD>); aufrufen muss ich natürlich schon machen.

Zitat

Übrigends, was steht in der Logdatei

In der Log-Datei sind keine Nachrichten die nicht von der Initialisierung sind. Also nichts was auf das Problem schließen lässt.

Ich poste mal Auszüge des Codes, vielleicht wirds dann verständlilcher.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
tbResult CIntro::Load()
{
    m_vIntro = new tbVideo;
    if(m_vIntro->Init("Data\\intro.avi")) TB_ERROR("Error beim Laden", TB_ERROR);
    if(m_vIntro->Play(FALSE)) TB_ERROR("Error beim abspielen", TB_ERROR);
    m_vIntro->NextFrame();
    
    return TB_OK;
}

tbResult CIntro::Move(float fTime)
{
    if(!m_vIntro->IsPlaying())
        g_pVirtualSchool->SetSimulationState(GS_MAIN_MENU);

    m_vIntro->Process();
    m_vIntro->NextFrame();

    return TB_OK;
}

tbResult CIntro::Render(float fTime)
{
    STitleVertex aVertex[4];
    
    m_pTitle = m_vIntro->GetRenderer()->GetTexture();

    // Puffer leeren und Szene beginnen

    tbDirect3D& D3D = tbDirect3D::Instance();
    D3D->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, tbColor(0.0f, 0.0f, 0.0f), 1.0f, 0);
    D3D->BeginScene();

    // ------------------------------------------------------------------


    // Vertexformat und Titelbildtextur setzen, Z-Buffer aus

    D3D.SetTexture(0, m_pTitle);
    ...

    // Die vier Vertizes des Titelbilds erstellen (Rechteck)

    ...

    // Als Dreiecksfolge zeichnen

    D3D->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(STitleVertex));

    // Szene beenden

    D3D->EndScene();

    return TB_OK;
}

Bugger

Frischling

Beiträge: 66

Wohnort: Bezirk Freistadt

Beruf: EDVO HTL Schüler

  • Private Nachricht senden

4

14.01.2008, 09:13

C-/C++-Quelltext

1
    m_vIntro = new tbVideo/*()*/;


Was mir auffällt ist dass du hier keinen Konstruktor aufruftst und da der mit ZeroMemory die Zeiger der Klasse auf NULL setzt, funktionieren dann auch Codes wie der hier:

C-/C++-Quelltext

1
2
3
// tbVideo::Exit():


TB_SAFE_DELETE(m_pStream); // TB_SAFE_DELETE prüft zuvor ob der Zeiger gültig ist -> != NULL
Hältst du nicht den Bug in Ehren, wird er dich noch manches Lehren.

Ein Gespräch setzt voraus, dass der andere Recht haben könnte.

Bugger

Frischling

Beiträge: 66

Wohnort: Bezirk Freistadt

Beruf: EDVO HTL Schüler

  • Private Nachricht senden

5

14.01.2008, 09:20

Außerdem reicht es NextFrame() nach jedem mal Rendern aufzurufen ;)
Hältst du nicht den Bug in Ehren, wird er dich noch manches Lehren.

Ein Gespräch setzt voraus, dass der andere Recht haben könnte.

Mr_Funstick

Frischling

  • »Mr_Funstick« ist der Autor dieses Themas

Beiträge: 8

Beruf: Schüler

  • Private Nachricht senden

6

15.01.2008, 15:45

Mal danke für die Tips, aber das ändert leider nichts an meinem Problem.
Ich hab jetzt mal folgendes geschrieben:

C-/C++-Quelltext

1
2
3
4
5
IBaseFilter* test;

m_vIntro->GetGraph()->FindFilterByName(L"SourceFilter", &test);
if(test==NULL)
    TB_INFO("Benötigter Filter nicht geladen");


Und die Nachricht landet in der Log-Datei. Das müsst doch heissen das der Filter von der Klasse tbVideo nicht geladen ist! Aber warum nicht? Ich verwende doch die Originalklasse von der beiligenden CD (3. Ausgabe).

Kann es sein das es andere Gründe dafür gibt das ein Filter nicht geladen worden ist? Fehlermeldungen befinden sich keine in der Log-Datei. Aber vielleicht irgend ein anderes Problem mit Hardwaer oder Codecs oder was weiss ich...

Ich hoff einer von euch hat ne Idee.

MFG Mr_Funstick

Werbeanzeige