Autor Beitrag
ardely
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Fr 26.07.13 11:35 
Guten Tag,

Können Sie mir bitte helfen, wie man eine wav-Datei aus einem TMemoryStream spielen kann?

Hier ist, was funktioniert, ich erziehe die WAV-Datei aus einer Datebank un speichere die wav-Datei auf die Festplatte und dann mit dem TmediaPlayer lasse ich es spielen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
..
 FileStream := TMemoryStream.Create;
.. // get audio from DataBase
sAudio:='E:\Audio1.wav' ;
 FileStream.SaveToFile(sAudio);
..
MediaPlayer1.FileName := sAudio;
MediaPlayer1.Open;
MediaPlayer1.play;

Ich möchte gern die Audio-Datei nicht auf der Festplatte speichern, sondern direkt über dem FileStream spielen lassen. Wie kann ich das mit dem mediaPlayer1 erreichen.
Ich bedanke mich im voraus für Ihre Hilfe.
Grüss
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Fr 26.07.13 22:05 
user profile iconardely hat folgendes geschrieben Zum zitierten Posting springen:
Ich möchte gern die Audio-Datei nicht auf der Festplatte speichern, sondern direkt über dem FileStream spielen lassen. Wie kann ich das mit dem mediaPlayer1 erreichen.

Mit der MediaPlayer-Komponente von Delphi geht es meines Wissens nicht.
Eine einfache Lösung für Dein Problem wäre:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, MMSystem;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1 : TForm1;
  Mem   : TMemoryStream;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  SndPlaySound(Mem.Memory, Snd_Async or Snd_Memory);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Mem.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Mem := TMemoryStream.Create;
  Mem.LoadFromFile('f:\test.wav');
end;

end.


Ansonsten schaue Dir mal DirectSound an: www.zusi.de/delphi/soundtutorial.pdf
Auch mit der BASS.DLL sollte es möglich sein. Oder Du verwendest eine Komponente, die das unterstützt. Oder Du kämpfst Dich durch die Multimedia-API und schreibst es selbst.
ardely Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Fr 26.07.13 22:32 
Hallo,
Sehr vielen Dank für deine Antwort und Beispiel, ich werde alles ausprobieren.