![]() |
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 - ![]() - ![]() - ![]() |
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 ![]() wobei eigentilch nur eine Messagebox enthalten ist. Leider benötigen die DX-Units, Sysutils, Classes, Variants etc. |
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. |
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; |
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.. |
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.
|
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.
|
Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
Wenn die Interfaces mit
Delphi-Quellcode:
verbunden werden, werden Pointer gesetzt, auch wenn die Interfaces nicht genutzt werden können. So ergibt die Abfrage
GraphBuilder.QueryInterface(IID_I*, *);
Delphi-Quellcode:
auch True, wenn kein Audio vorhanden ist. Dasselbe gilt für
// Kann die autstärke und Ballance geändert werden?
if Assigned(BasicAudio) then
Delphi-Quellcode:
Deshalb sollte jeweils eine weitere Abfrage erfolgen. Zum Beispiel
// Hat die Datei ein VideoStream?
if Assigned(VideoWindow) then
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; ![]()
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; ![]() |
AW: Re: DMO: DirectShow Media Player (Video und Audio wiedergabe
Zitat:
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 21:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz