Re: DSPack::spielt einmal->danach nicht mehr
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:
Wie und wo würdest du dann in frmVideo FGC zuweisen, denn so bringt mir das nichts ?
if LowerCase(ExtractFileExt(fFiles[playindex].Dateiname)) = '.mpeg' then
begin CheckState; end; |
Re: DSPack::spielt einmal->danach nicht mehr
Delphi-Quellcode:
Verstehe ich nun nicht.
Wie und wo würdest du dann in frmVideo FGC zuweisen, denn so bringt mir das nichts ?
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ß |
Re: DSPack::spielt einmal->danach nicht mehr
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; |
Re: DSPack::spielt einmal->danach nicht mehr
Zitat:
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ß |
Re: DSPack::spielt einmal->danach nicht mehr
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:
Kann ich bei dir alles nicht finden :(
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 gruß |
Re: DSPack::spielt einmal->danach nicht mehr
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)) = '.mpeg' then
begin spath := fFiles[playindex].Dateiname; frmVideo.Play; pause := True; end; |
Re: DSPack::spielt einmal->danach nicht mehr
Zitat:
gruß |
Re: DSPack::spielt einmal->danach nicht mehr
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:
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...
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; |
Re: DSPack::spielt einmal->danach nicht mehr
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 |
Re: DSPack::spielt einmal->danach nicht mehr
ok danke habs nochmal bisi besser dargestellt denk ich....
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 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