Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Audio Resource mit Windows Mediaplayer wiedergeben (https://www.delphipraxis.net/191801-audio-resource-mit-windows-mediaplayer-wiedergeben.html)

BlackSnag 21. Feb 2017 07:55

Audio Resource mit Windows Mediaplayer wiedergeben
 
Hallo alle mit einander,

ich will eine Audio-Datei aus der Ressourcen mit dem TWindowsMediaPlayer abspielen. (das Audioformat ist noch nicht fest gelegt, zurzeit wir aber .wav benutzt)
Leider Kriege Ichs einfach nicht auf die Reihe. :(

Über die URL konnte ich schon Dateien von der Festplatte abspielen, aber weiter bin ich auch auf dem Weg nicht gekommen.
Kann mir jemand mit seinem Latein weiter helfen ich bin mit meinem nämlich am Ende.
Hier noch ein Zusammenfassung meins Codes:
Delphi-Quellcode:
procedure PlayResource(Name: string);
var
  _ResourceStream: TResourceStream;
  _wmpMediaPlayer: TWindowsMediaPlayer;
begin
  _ResourceStream := TResourceStream.Create(HInstance, Name, RT_RCDATA);
  _wmpMediaPlayer := TWindowsMediaPlayer.Create(Self);
  _wmpMediaPlayer.Parent := Self;
  _wmpMediaPlayer.Visible := False;
  _wmpMediaPlayer.Settings.AutoStart := False;

{Hier muss die Zuweisung geschehen
 Beim Laden von der Festplatte wer es:
  _wmpMediaPlayer.Url := AudioFileName;
}


  _wmpMediaPlayer.controls.play;
end
Habt bitte ein bisschen Nachsicht wenn ich mich schlecht ausgedrückt habe, dass erste Mal das ich sowas mache.

Danke im Voraus

TiGü 21. Feb 2017 08:32

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Bringt es was, wenn du _ResourceStream.Position := 0; vor dem Abspielen setzt?

TiGü 21. Feb 2017 08:46

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Moment mal, an welcher Stelle erfolgt denn die Verknüpfung zwischen den Resourcestream und dem MediaPlayer?
Zeig doch mal bitte deinen richtigen und gesamten Quelltext.

BlackSnag 21. Feb 2017 09:53

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Wie oben schon erwähnt komm ich die beiden einfach nicht auf einen gemeinsamen Nenner.

deswegen gibt es auch noch keine Zuweisung.

Und wegen dem Quelltext.
Das ist eigentlich der Ganze Quelltext, ich hab nur die Funktionen zum Lautsterke regeln und zum beenden weckgelassen, weil die mit dem Problem Garnichts zu tun haben können.

EWeiss 21. Feb 2017 10:09

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Du benötigst einen FileStream um die Datei abspielen zu können.
Das bedeutet du musst vorher die Datei aus der Resource extrahieren auf die Platte speichern anschließend
kannst du die Datei zum Mediaplayer Assign(Zuordnen) und abspielen.

Delphi-Quellcode:
var
  fname: string;
  fStream: TFileStream;
...
fname := ExtractFileDir(Paramstr(0))+ Name;
_ResourceStream := TResourceStream.Create(HInstance, Name, RT_RCDATA);
try
  fStream := TFileStream.Create(fname, fmCreate);
  try
    fStream.CopyFrom(_ResourceStream, 0);
  finally
    fStream.Free;
  end;
finally
  _ResourceStream.Free;
end;

MediaPlayer1.Close;
MediaPlayer1.FileName:= fname;
MediaPlayer1.Open;

end;
Davon ab
Delphi-Quellcode:
_wmpMediaPlayer.Url := AudioFileName;


ist falsch.
_wmpMediaPlayer.FileName wäre korrekt.

gruss

BlackSnag 21. Feb 2017 10:18

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Das würde Funktionieren.

Leider soll das Programm auch laufen können wenn du keine Schreibrechte hast.
Spätesten an diesem Punkt hätte man Probleme.:cry:

Trotzdem danke für die Idee.

EWeiss 21. Feb 2017 10:29

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Zitat:

Zitat von BlackSnag (Beitrag 1362212)
Das würde Funktionieren.

Leider soll das Programm auch laufen können wenn du keine Schreibrechte hast.
Spätesten an diesem Punkt hätte man Probleme.:cry:

Trotzdem danke für die Idee.

Dann verwende keinen MediaPlayer sondern MMSystem.

Delphi-Quellcode:
uses mmsystem;

procedure TForm1.Button1Click(Sender: TObject);
var  
  hFind, hRes: THandle;  
  Song: PChar;
begin
  hFind := FindResource(HInstance, 'MainSongNameInDerResource', 'WAVE');
  if hFind <> 0 then
  begin  
    hRes := LoadResource(HInstance, hFind);  
    if hRes <> 0 then
    begin    
      Song := LockResource(hRes);    
      if Assigned(Song) then
        SndPlaySound(Song, snd_ASync or snd_Memory);    
      UnlockResource(hRes);  
    end;  
    FreeResource(hFind);
  end;
end;

t.roller 21. Feb 2017 11:21

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Zitat:

Zitat von EWeiss (Beitrag 1362211)
Davon ab
Delphi-Quellcode:
_wmpMediaPlayer.Url := AudioFileName;
ist falsch.
_wmpMediaPlayer.FileName wäre korrekt.

gruss

TWindowsMediaPlayer aus WMPLib_TLB.pas ist "etwas" anders und hat andere Befehle als der eingebaute TMediaPlayer.

EWeiss 21. Feb 2017 11:23

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Zitat:

Zitat von t.roller (Beitrag 1362223)
Zitat:

Zitat von EWeiss (Beitrag 1362211)
Davon ab
Delphi-Quellcode:
_wmpMediaPlayer.Url := AudioFileName;
ist falsch.
_wmpMediaPlayer.FileName wäre korrekt.

gruss

TWindowsMediaPlayer aus WMPLib_TLB.pas ist "etwas" anders und hat andere Befehle als der eingebaute TMediaPlayer.

OK.. Ist ja kein Beinbruch.
Destotrotz hat eine Datei auf der Platte nicht's mit ner URL gemein.

gruss

BlackSnag 21. Feb 2017 11:59

AW: Audio Resource mit Windows Mediaplayer wiedergeben
 
Zitat:

Zitat von EWeiss (Beitrag 1362225)
Zitat:

Zitat von t.roller (Beitrag 1362223)
Zitat:

Zitat von EWeiss (Beitrag 1362211)
Davon ab
Delphi-Quellcode:
_wmpMediaPlayer.Url := AudioFileName;
ist falsch.
_wmpMediaPlayer.FileName wäre korrekt.

gruss

TWindowsMediaPlayer aus WMPLib_TLB.pas ist "etwas" anders und hat andere Befehle als der eingebaute TMediaPlayer.

OK.. Ist ja kein Beinbruch.
Destotrotz hat eine Datei auf der Platte nicht's mit ner URL gemein.

gruss

Wenn das Audio File im selben Verzeichnis wie die exe befinde funktioniert es mit der URL.

Des weiteren hat TWindowsMediaPlayer kein FileName, somit kann ich es nicht zuweisen.

Ich gebe zu AudioFileName ist nicht ganz zutreffen, eigentlich müsste es AudioFilePath heißen.

Den TMediaPlayer kann ich nicht benutzen, da er teilweise gar nicht oder nur schlecht die Lautsterke regeln kann. Ich muss sie sogar während des Abspielens ändern können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr.
Seite 1 von 2  1 2      

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