AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DSPack::spielt einmal->danach nicht mehr

DSPack::spielt einmal->danach nicht mehr

Ein Thema von Nils_13 · begonnen am 25. Sep 2006 · letzter Beitrag vom 29. Aug 2007
Antwort Antwort
Seite 2 von 4     12 34   
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#11

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 25. Sep 2006, 10:42
Delphi-Quellcode:
procedure TfrmMain.CheckState;
begin
  if FGC then
  begin
    with frmVideo do
    begin
      FilterGraph.Stop;
      FilterGraph.ClearGraph;
      FilterGraph.Free;
      FGC := False;
    end;
  end else
  begin
    with frmVideo do
    begin
      FilterGraph.RenderFile(fFiles[playindex].pfad);
      FilterGraph.play;
      FGC := True;
      pause := True;
    end;
  end;
  frmVideo.Show;
end;
Delphi-Quellcode:
if LowerCase(ExtractFileExt(fFiles[playindex].Dateiname)) = '.mpegthen
begin
  CheckState;
end;
Wie und wo würdest du dann in frmVideo FGC zuweisen, denn so bringt mir das nichts ?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 25. Sep 2006, 10:53
Wie und wo würdest du dann in frmVideo FGC zuweisen, denn so bringt mir das nichts ? Verstehe ich nun nicht.

Geht das nicht als Public Variable?
übergreifend aus einer Unit? welche du unter used in der frmVideo zugewiesen hast?

FGC : Boolean?
Kannst mal den Source schicken? (Muss aber nicht unbedingt sein).
dann schau ich es mir mal an.

Innerhalb der frmVideo wird das wohl nichts werden
den beim schließen dieser ist die Variable(das ergebnis) davon nicht mehr vorhanden
mußt du also in deiner Hauptform einbinden.

gruß
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#13

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 25. Sep 2006, 11:08
Hast mich falsch verstanden. Ich habe die Variable in der frmMain. Ich möcht wissen, wie ich die Variable von der frmVideo aus zuweisen muss, dass das funktioniert, bisher stand in der letzten Zeile von frmVideo.Destroy FGC := True, aber das bringt anscheinend nichts, denn bei dem Code bleibt das Videofenster schwarz.
Delphi-Quellcode:
procedure TfrmMain.CheckState;
begin
  if FGC then
  begin
    with frmVideo do
    begin
      FilterGraph.Stop;
      FilterGraph.ClearGraph;
      FilterGraph.Free;
      FGC := False;
    end;
  end else
  begin
    with frmVideo do
    begin
      FilterGraph.RenderFile(fFiles[playindex].pfad);
      FilterGraph.play;
      FGC := True;
      pause := True;
    end;
  end;
  frmVideo.Show;
end;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 25. Sep 2006, 11:52
Zitat von Nils_13:
Hast mich falsch verstanden. Ich habe die Variable in der frmMain. Ich möcht wissen, wie ich die Variable von der frmVideo aus zuweisen muss, dass das funktioniert, bisher stand in der letzten Zeile von frmVideo.Destroy FGC := True, aber das bringt anscheinend nichts, denn bei dem Code bleibt das Videofenster schwarz.
Delphi-Quellcode:
procedure TfrmMain.CheckState;
begin
  if FGC then
  begin
    with frmVideo do
    begin
      FilterGraph.Stop;
      FilterGraph.ClearGraph;
      FilterGraph.Free;
      FGC := False;
    end;
  end else
  begin
    with frmVideo do
    begin
      FilterGraph.RenderFile(fFiles[playindex].pfad);
      FilterGraph.play;
      FGC := True;
      pause := True;
    end;
  end;
  frmVideo.Show;
end;
Nein funktioniert nicht in Delphi.(Glaub ich zumindest)
Weil du den Thread frmVideo beendest und damit FGC := True keine bedeutung mehr hat.
(Müßte aber beim beenden wenn schon auf False gesetzt werden) denn dein Video läuft ja nicht mehr.

Wenn es True ist und der wert doch noch selbst nach dem beenden der frmVideo
existenz ist dann ist es auf jedenfall falsch.
Er muss auf FALSE gesetzt werde.

gruß


gruß
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 25. Sep 2006, 12:40
Habe deine 2 Pas dateien mal gescannt nach Graph
Kann nirgends erkennen wo du den FilterGraph initialisierst.

Gibt es da kein FilterGraph.Create oder ähnlich
Auch denke ich das du nach jeden FilterGraph.Free das FilterGraph.Window neu
initialisieren mußt von all den sachen kann ich in den Dateien nix finden.

Bei directX gibts zumindest den Befehl IVIDEO.VIdeoWindow := xxx.hdc


Hier mal ein ausschnitt von meinen Player (VB)

Delphi-Quellcode:
Private Sub sndPlayWmv(ByVal filename As String)

    On Error GoTo sndPlayWmvErr

    Set MediaControl = New FilgraphManager
    If MediaControl Is Nothing Then
        MsgBox "Kann die Ojektlib Mediacontrol nicht erstellen"
        Exit Sub
    End If

    Set VideoWindow = MediaControl
    MediaControl.RenderFile (filename)

    With VideoWindow
        .WindowStyle = CLng(&H6000000) ' WS_DLGFRAME | WS_VSCROLL
.SetWindowPosition mLeft, mTop, uWidth, uHeight
.Owner = UserControl.hwnd
set the form as the parent
    End With 'VideoWindow

MediaControl.Run

Exit Sub
Kann ich bei dir alles nicht finden

gruß
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#16

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 25. Sep 2006, 13:17
Ich habe es anders gelöst
Delphi-Quellcode:
procedure TfrmVideo.Play;
begin
  frmVideo.Show;
  if not FilterGraph.Active then
    FilterGraph.Active := true;
  FilterGraph.ClearGraph;
  FilterGraph.RenderFile(frmMain.spath);
  FilterGraph.Play;
end;
Delphi-Quellcode:
if LowerCase(ExtractFileExt(fFiles[playindex].Dateiname)) = '.mpegthen
begin
  spath := fFiles[playindex].Dateiname;
  frmVideo.Play;
  pause := True;
end;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 25. Sep 2006, 13:21
Zitat von Nils_13:
Ich habe es anders gelöst
Delphi-Quellcode:
procedure TfrmVideo.Play;
begin
  frmVideo.Show;
  if not FilterGraph.Active then
    FilterGraph.Active := true;
  FilterGraph.ClearGraph;
  FilterGraph.RenderFile(frmMain.spath);
  FilterGraph.Play;
end;
Delphi-Quellcode:
if LowerCase(ExtractFileExt(fFiles[playindex].Dateiname)) = '.mpegthen
begin
  spath := fFiles[playindex].Dateiname;
  frmVideo.Play;
  pause := True;
end;
Na fein wenn es jetzt läuft

gruß
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 28. Aug 2007, 09:16
Hi,

ich hab auch manchmal ein Problem mit DSPack, und zwar wenn mehrere DIVX Videos hintereinander gespielt werden, kommt manchmal ein renderfile error...dies ist meine Play Prozedur:

Delphi-Quellcode:
procedure TForm7.PlayTHIS(Sender: TObject; This : String);
begin
         if FGVideo.Active then begin
           Form7.FGVideo.Stop;
           Form7.FGVideo.Active := False;
           Form7.FGVideo.ClearGraph;
           Form7.DCVISPluginRenderer1.Plugins.SetAudiofilter(nil);
           Form7.FgVideo.DisconnectFilters;
         end;
          if not Form7.FGVideo.Active then Form7.FGVideo.Active := True;
          Form7.FGVideo.ClearGraph;
      Sleep(100);
      try
          Errorcode := Form7.FGVideo.RenderFile(this);

    
//////////////// HIER IST WOHL DAS PROBLEM IRGENDWIE


        CodecError := GetEventCodeDef(Errorcode);
        if (CodecError = '') OR ( CodecError = ' ') then CodecError := 'No AV File';
        if (Errorcode = 0000) OR (Errorcode = S_OK) OR (Errorcode = VFW_S_PARTIAL_RENDER) OR (Errorcode = VFW_S_AUDIO_NOT_RENDERED) OR (Errorcode = VFW_S_DUPLICATE_NAME) OR (Errorcode = VFW_S_VIDEO_NOT_RENDERED) then begin //alles ok
          try
            if VisualsMR then Form7.DCVISPluginRenderer1.Plugins.SetAudiofilter(Form7.FGDSFilter as IBaseFilter);
          except
             //Plugins Problem
          end;
          try
            Form7.FGVideo.Play;
            Playing := True;
          except
              //Trying to Play Error
              Working := False;
              StopALL;
              Exit;
          end;
        end
        else begin
        //CodecFehler
        ErrorDesc := 'Unbekannter Fehler';
         Case Errorcode of
              E_ABORT : ErrorDesc := 'Operation aborted';
              E_FAIL : ErrorDesc := 'Failure';
              E_INVALIDARG : ErrorDesc := 'Argument is invalid';
              E_OUTOFMEMORY : ErrorDesc := 'Insufficient memory';
              E_POINTER : ErrorDesc := 'Null pointer argument';
              VFW_E_CANNOT_CONNECT : ErrorDesc := 'No combination of intermediate filters could be found to make the connection';
              VFW_E_CANNOT_LOAD_SOURCE_FILTER : ErrorDesc := 'The source filter for this file could not be loaded';
              VFW_E_CANNOT_RENDER : ErrorDesc := 'No combination of filters could be found to render the stream';
              VFW_E_INVALID_FILE_FORMAT : ErrorDesc := 'The file format is invalid';
              VFW_E_NOT_FOUND : ErrorDesc := 'An object or name was not found';
              VFW_E_UNKNOWN_FILE_TYPE : ErrorDesc := 'The media type of this file is not recognized';
              VFW_E_UNSUPPORTED_STREAM : ErrorDesc := 'Cannot play back the file: the format is not supported';
         end;
         Errorcode := 0001;
         Working := False;
         StopALL;
         Exit;
       end;
     except
        //Renderfile Error oder System überlastet
        Errorcode := 0001;
        Working := False;
        StopALL;
        Exit;
     end;
   end;
    //ALLES OK Player läuft
   if (Errorcode = 0000) OR (Errorcode = S_OK) OR (Errorcode = VFW_S_PARTIAL_RENDER) OR (Errorcode = VFW_S_AUDIO_NOT_RENDERED) OR (Errorcode = VFW_S_DUPLICATE_NAME) OR (Errorcode = VFW_S_VIDEO_NOT_RENDERED) then begin
      deskdisplay.Label2.Caption := 'Jetzt läuft:';
      TrackCounter := TrackCounter +1;
      Form7.PlayTime.Enabled := True;
      REMOVE := False;
      Playing := True;
   end;
   end
end;
Wär cool wenn mir jemand helfen könnte, is glaub alles etwas wirr und durcheinander...aber es klappt fast immer..nur eben manchmal bei divx filmen oder wenn verschiedene divy xvid ...dann mp3 und wieder divx gespielt werden, kommt manchmal der renderfilerror...
Tom
Just DO it
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#19

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 28. Aug 2007, 09:27
Hallo,

wenn Du Deinen Quellcode etwas aufräumst und in [delphi][/delphi] Tags steckst, steigen Deine Chancen auf Hilfe enorm. In den Verhau kann ich mich jedenfall jetzt nicht einarbeiten.
Schmeiss doch mal alles raus, was nichts mit dem Abspielen zu tun hat.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: DSPack::spielt einmal->danach nicht mehr

  Alt 28. Aug 2007, 09:51
ok danke habs nochmal bisi besser dargestellt denk ich....
Tom
Just DO it
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:37 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