AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi MP3-Player selbst schreiben, Grundvoraussetzungen?
Thema durchsuchen
Ansicht
Themen-Optionen

MP3-Player selbst schreiben, Grundvoraussetzungen?

Ein Thema von Aike · begonnen am 9. Okt 2009 · letzter Beitrag vom 13. Nov 2009
 
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#21

Re: MP3-Player selbst schreiben, Grundvoraussetzungen?

  Alt 13. Okt 2009, 09:15
Ich habe Punkt 1 und 3 meines Edits fixen können, indem ich meine Version mit dem (original) Source Code verglichen und kopiert hab. Leider weiß ich überhaupt nicht, was schiefgegangen sein könnte *g* OnEndFile etc. geht auch.

Allerdings gibt es immer noch das 27-Zeichen-Problem.

Ich hab ein bisschen weiterprogrammiert und bin jetzt zu einem weiteren Problem gekommen: Ich möchte gerne die Soundkarte für die Ausgabe zur Laufzeit ändern. Um die Soundkarten rauszubekommen, benutze ich diesen Code, der auch funktioniert:

Delphi-Quellcode:
const
  DRVM_MAPPER_PREFERRED_SET = $2000+22;

implementation

{$R *.dfm}

function ChangePrimarySndOutDevice(dev: cardinal): integer;
{dev Bereich: 0 bis waveOutGetNumDevs - 1} 
begin
  result := waveOutMessage(HWAVEOUT(WAVE_MAPPER), DRVM_MAPPER_PREFERRED_SET, dev, 0);
end;

//Listet alle verfügbaren Ausgabekarten
procedure TfrmSoundkarte.GetOutDevices;
var
  dev: Integer;
  caps: TWaveOutCaps;
begin
  ComboBox1.Clear;
  for dev := 0 to waveOutGetNumDevs - 1 do
  begin
    waveOutGetDevCaps(dev, @caps, sizeof(TWaveOutCaps));
    ComboBox1.Items.Add(caps.szPname);
  end;
  ComboBox1.ItemIndex := 0; //Die jetzige primäre Soundkarte auswählen
end;

//Alle Comboboxen füllen
procedure TfrmSoundkarte.FormCreate(Sender: TObject);
begin
  GetOutDevices;
end;

procedure TfrmSoundkarte.Button1Click(Sender: TObject);
begin
  if ChangePrimarySndOutDevice(Combobox1.ItemIndex) = MMSYSERR_NOERROR then
  begin
    GetOutDevices; //Windows setzt immer die primäre Karte als 0, daher müssen wir die Liste neu holen
    MessageDlg('Primäres Ausgabegerät wurde erfolgreich geändert', mtInformation, [mbOK], 0);
    close
  end
  else
    MessageDlg('Fehler beim Setzen des primären Ausgabegerätes', mtError, [mbOK], 0);
end;
Den Code hab ich hier gefunden, weiß leider den Thread nicht mehr, sonst würd ich ihn verlinken. Jedenfalls, schön und gut, das funktioniert, aber natürlich nicht zur Laufzeit des Programmes. Da es bei Winamp geht, muss es aber irgendwie gehen ;-p Ich habe mir überlegt, dass die Soundkarte vielleicht beim Create von MeMPPlaylist zugewiesen wird und habe versucht, nach dem ändern der Soundkarte MeMPPlaylist freizugeben und neu zu erzeugen, aber dann geht der Player nicht mehr (stürzt nicht ab, spielt aber auch nicht).

Hat jemand Vorschläge? *g*
Achim
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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