AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Video über Andorra 2D TAdVideoPlayer
Thema durchsuchen
Ansicht
Themen-Optionen

Video über Andorra 2D TAdVideoPlayer

Ein Thema von NTcomputer_0 · begonnen am 5. Dez 2009 · letzter Beitrag vom 6. Dez 2009
Antwort Antwort
Benutzerbild von NTcomputer_0
NTcomputer_0

Registriert seit: 7. Feb 2009
29 Beiträge
 
Delphi 2005 Personal
 
#1

Video über Andorra 2D TAdVideoPlayer

  Alt 5. Dez 2009, 18:44
Ich habe grade angefangen, ein bisschen mit Andorra 2D zu programmieren, und schon gibts die ersten Probleme.
Ich habe in einer Unit eine Form, auf der nur ein TAdDraw liegt. Das initialisiere ich folgendermaßen:

Delphi-Quellcode:
  AdDraw:=TAdDraw.Create(self);
  AdDraw.DllName:='AndorraDX93D.dll';
  with AdDraw.Display do begin
    Width:=1280;
    Height:=1024;
    BitDepth:=ad32Bit;
    DisplayMode:=dmFullscreen;
  end;
  
  video_init;

  If AdDraw.Initialize Then begin
    drawframes.Enabled:=true;
  end else begin
    ShowMessage(AdDraw.GetLastError);
    halt;
  end;
Danach wird eine Funktion in einer anderen Unit aufgerufen, die dadrauf ein Video zeichnen (oder erstmal erstellen) soll:

Delphi-Quellcode:
function video_register(relpath:string;StopFunction:TStopFunction):integer;
var
  count:integer;
  pm:TMethodPointer;
begin
  pm.pMethod := @StopFunction;
  pm.pObject := nil;
  count:=Length(video_instances);
  SetLength(video_instances,count+1);
  with video_instances[count] do begin
    started:=false;
    AdPlayer:=TAdVideoPlayer.Create(FMain.AdDraw); //Hier kommt schon der Fehler!
    AdPlayer.Image.Texture.Filter:=atLinear;
    AdPlayer.Open(Fmain.apath+relpath);
    AdPlayer.Loop:=false;
    AdPlayer.onStop:=TAdNotifyEvent(pm);
    space:=(screen.Height-(screen.Width/AdPlayer.Image.Width*
      AdPlayer.Image.Height))/2;
  end;
  Result:=count;
end;
Und gleich beim Erzeugen des Video-Players bekomme ich eine Access-Violation. Hat jemand spontan eine Ahnung, woran das liegen könnte? Ich habe mir mal die Beispiele angeschaut, im Video-Player wird da eigentlich das gleiche gemacht, nur halt in der selben Unit. Wobei es daran nicht liegt, habe probeweise das Video in der Hauptunit direkt nach dem Erzeugen des AdDraws erstellt, es kommt genau der selbe Fehler.

Wäre über jede Hilfe dankbar!
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Video über Andorra 2D TAdVideoPlayer

  Alt 5. Dez 2009, 21:57
Ich schätze, dass du versuchst TAdVideoPlayer vor der Initialisierung des TAdDraw zu erzeugen. Wenn du erst TAdDraw.Initialize aufrufst sollte es klappen.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von NTcomputer_0
NTcomputer_0

Registriert seit: 7. Feb 2009
29 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Video über Andorra 2D TAdVideoPlayer

  Alt 6. Dez 2009, 09:23
Sorry, das hatte ich vergessen zu erwähnen:
Das   video_init; dient nicht zum Erstellen des Video-Players, dadurch werden erstmal Arrays vorbereitet. Das ERstellen passiert erst nach dem Initialize des AdDraws:

Delphi-Quellcode:
  video_init;

  If AdDraw.Initialize Then begin
    drawframes.Enabled:=true;
  end else begin
    ShowMessage(AdDraw.GetLastError);
    halt;
  end;

  video_intro_1; // hier wird erst der Player erstellt
Delphi-Quellcode:
procedure video_intro_1;
begin
  video_intro_instances[1]:=video_register('..\videos\intro1.m1v',
    video_intro_1stop);
  video_start(video_intro_instances[1]);
end;
Daran liegt es also nicht!
  Mit Zitat antworten Zitat
Benutzerbild von NTcomputer_0
NTcomputer_0

Registriert seit: 7. Feb 2009
29 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Video über Andorra 2D TAdVideoPlayer

  Alt 6. Dez 2009, 11:51
Jetzt funktioniert es doch, wenn ich den VideoPlayer in der Hautpunit erstelle!?
Wieso geht es dann nicht in der anderen Unit, AdDraw habe ich als public erstellt..
HAt jemand eine Idee?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz