Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   DMO: DirectShow Media Player (Video und Audio wiedergabe) (https://www.delphipraxis.net/140677-dmo-directshow-media-player-video-und-audio-wiedergabe.html)

lbccaleb 23. Sep 2009 19:14


DMO: DirectShow Media Player (Video und Audio wiedergabe)
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo Community,

da ich in letzter Zeit des öfteren drauf angesprochen wurde, habe ich mal einen kleinen Media Player programmiert, der komplett auf die Microsoft Schnittstelle DirectShow abgestimmt ist!

Man brauch keine weiteren Bibliotheken für die Benutzung des Players! (Natürlich müssen aber die Codecs des abspielenden Formates installiert sein)
Es handelt sich hierbei um einen einfachen MediaPlayer der nur die Benutzung demonstrieren soll. Wer intresse hat den weiter zu entwickeln, kann das gerne tun :zwinker:

Sollte noch irgendwo ein Fehler sein, so würde ich euch bitten, den hier zu posten damit ich den Fehler noch beheben kann. Hab leider nicht so viel Zeit im mom um daran groß weiter zu arbeiten, oder Ihn weiter zu entwickeln.


Hoffe es kann der ein oder andere was damit Anfangen, und brauch nun nicht mehr auf externe Dll´s zurück zu greifen.

(Falls Ihr irgendwo Rechtschreibfehler findet einfach ignorieren) oO


Source und Screener sind angehangen.


Was kann er?

-Abspielen von Audio und Video Dateien (Codecs?)
-Lautstärke Regelung
-Ballance Regelung
-Standart Player Steuerung
-Automatische TrackBar aktualisierung
-DirectShow Fehler auswertung


Was benötige Ich?

-Zum compilieren braucht Ihr natürlich die Header Dateien von DirectShow
-Ihr braucht die DSUtils.pas (Fehler auswertung) von dem DSPack (Hänge ich hier mit an)


Links

-DirectX Headers
-DSPack
-Nützliche DS Tools für Audio und Video und Visualisation

turboPASCAL 24. Sep 2009 13:10

Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
 
Vielen Dank erst einmal.

Vorweg, ich kenne mich mit DX nicht wirklich aus, bin also ein richtiger Anfänger. ;)
Schickes Demo, auch das man gleich ein paar Kontrols wie Audio-Volume dazu bekommt.

Leider hilft mir das pers. nicht unbedingt viel weiter da ich hoffte das es möglich währe
eine MP3-Soundwiedergabe zu realisieren die eine geringe Applicationsgrösse erzeugt.
Mein Testdemobeisieldingsbums brauch zB. ~150KB,
wobei eigentilch nur eine Messagebox enthalten ist. Leider benötigen die DX-Units, Sysutils, Classes, Variants etc.

lbccaleb 24. Sep 2009 16:12

Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
 
Mhh also du willst quasi auch die DirectShow Unit einsparen?
Oder hab ich da jetzt was falsch verstanden?

Um MP3´s abzuspielen kannst du es genau so machen, wenn du nur MP3´s abpielen willst, kannst du das zB. auch ohne das laden des IVideoWindow Interfaces!
Die anderen Interfaces sind ja halt nur für Lautstärke und spulen und so.

Garfield 26. Sep 2009 11:10

Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
 
Du verwendest die DSUtils.pas nur wegen der Funktion GetErrorString?
Delphi-Quellcode:
function GetErrorString(hr: HRESULT): string;
var buffer: array[0..254] of char;
begin
  AMGetErrorText(hr,@buffer,255);
  result := buffer;
end;

lbccaleb 26. Sep 2009 13:21

Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
 
Ja, verwende ich...
Natürlich kann man die Funktion auch noch extrahieren und in das Programm einbinden..

Garfield 27. Sep 2009 09:53

Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
 
Naja. Ich halte das Kopieren schon für sinnvoll. Denn dann genügen die Header von Clootie. Wenn die Unit DSUtil verwendet wird, wird zumindest noch die Unit WMF9 aus der vom DSPack verwendeten DirectX-Version benötigt.

Garfield 29. Sep 2009 09:10

Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
 
Was bewirkt eigentlich das MediaControl.StopWhenReady? Ich meine ausser dass das ActiveMovie Window geöffnet wird.

Garfield 30. Sep 2009 10:23

Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
 
Wenn die Interfaces mit
Delphi-Quellcode:
GraphBuilder.QueryInterface(IID_I*, *);
verbunden werden, werden Pointer gesetzt, auch wenn die Interfaces nicht genutzt werden können. So ergibt die Abfrage
Delphi-Quellcode:
    // Kann die autstärke und Ballance geändert werden?
    if Assigned(BasicAudio) then
auch True, wenn kein Audio vorhanden ist. Dasselbe gilt für
Delphi-Quellcode:
    // Hat die Datei ein VideoStream?
    if Assigned(VideoWindow) then
Deshalb sollte jeweils eine weitere Abfrage erfolgen. Zum Beispiel
Delphi-Quellcode:
function IsAudio: Boolean;
var
  Int : Integer;
begin
  {
  *  HRESULT get_Volume(
  *   [out] long *plVolume          Pointer to a variable that receives the volume.
  *  );
  }
  Result := Assigned(FBasicAudio) and
            not(Failed(FBasicAudio.get_Volume(Int)));
  {
  *  Results:
  *    E_NOTIMPL            The filter graph does not contain an audio renderer filter.
  *                          (Possibly the source does not contain an audio stream.)
  *    E_POINTER            Null pointer argument.
  *    S_OK                 Success.
  }
end;
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Delphi-Quellcode:
function IsVideo: Boolean;
var
  vis : longBool;
begin
  {
  *  HRESULT get_Visible(
  *    [out] long *pVisible          Pointer to a variable that receives the
  *                                    value OATRUE if the window is visible, or
  *                                    OAFALSE if the window is hidden.
  *  );
  }
  Result := Assigned(FBasicVideo) and
            Assigned(FVideoWindow) and
            not(Failed(FVideoWindow.get_Visible(vis)));;
  {
  *  FBasicVideo ist auch verbunden, wenn kein Video vorhanden ist. Deshalb wird
  *  der Zustand des VideoWindow abgefragt. Die Abfrage ergibt nur Wahr, wenn
  *  Video vorhanden ist.
  *
  *  Results:
  *    E_POINTER                      NULL pointer.
  *    S_OK                           Success.
  *    VFW_E_NOT_CONNECTED            The video renderer filter is not connected.
  }
end;
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

mz23 19. Dez 2010 09:25

AW: Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
 
Zitat:

Zitat von lbccaleb (Beitrag 955140)
Ja, verwende ich...
Natürlich kann man die Funktion auch noch extrahieren und in das Programm einbinden..

Hallo,
ich finde ganz toll, daß du uns hier so viel
Quellcodes zur Verfügung stellst - und jeder
von uns weiß, daß es viele Möglichkeiten gibt,
ein Problem (bzw. eine Aufgabe) zu lösen.

So wie MultiKulti schätze ich auch MultiMakeIt
und versuche mich in den Lösungsansatz eines
netten Menschen hineinzulesen.

Für mich dazugelerntes übernehme ich und sage
dankeschön, aber GrundlagenDiskussionen über
Geschmacksfragen finde ich zwar wichtig aber
nicht zwingend.

Wir sind Arbeiter (Ing.'s) und keine Compilerbauer.
Gott habe ich die zwei Semester CompilerBau gehaßt!

Mein Dank allen, die hier keine Scheu haben,
ihre Lösungen anzubieten. Vielen Dank Leute.

MfG Manfred Zenns

PS: Manchmal muß man sich Dinge von der Seele reden dürfen.
Vielleicht nur ein Zeichen, daß ich alt werde :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 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