AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi MCISendString: Datei aus Resource wiedergeben
Thema durchsuchen
Ansicht
Themen-Optionen

MCISendString: Datei aus Resource wiedergeben

Ein Thema von Martin K · begonnen am 27. Nov 2005 · letzter Beitrag vom 28. Nov 2005
Antwort Antwort
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#1

MCISendString: Datei aus Resource wiedergeben

  Alt 27. Nov 2005, 10:44
Hi Leute,

1.
weiß jemand, wie man mit MCISendString eine Datei unendlich oft abspielen kann (also eine Endlos-Schleife) ?

Bei PlaySound wäre das SND_Loop, aber ich will eine mp3 möglichst einfach absielen, und dazu verwende ich MCISendString.
(Bitte nicht antworten, dass ich den TMediaPlayer nehmen soll, ich will die Datei möglichst einfach abspielen, mit einem Befehl und ohne einen Player.)


2.
Wie kann man mit MCISendString Dateien aus Resourcen wiedergeben ?
(Und zwar ohne, dass man die Datei aus der Resource extrahiert und in ein Verzeichnis speichert.)


Danke, schon mal!
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: MCISendString: Schleife/Resource

  Alt 27. Nov 2005, 11:14
Hab jetzt selbst rausgefunden wie eine Schleife geht:
  MCISendstring('play test repeat',NIL,0,0); Aber wie ist das mit einer Resource ???
Gibt es bei MCISendString so was ähnliches wie:
  PlaySound(PChar(1),HInstance,SND_ASync or SND_Resource); Danke für jede Hilfe!
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: MCISendString: Datei aus Resource wiedergeben

  Alt 27. Nov 2005, 12:19
Ich glaube nicht, dass man mit MCI Ressourcen wiedergeben kann.

Ich hatte hier ein Tool gepostet, mit dem man ohne wirkliche Konvertierung aus einer MP3-Datei eine WAVE-Datei machen kann. Wenn du die in deine EXE einbindest, dann kannst du sie über (Snd)PlaySound abspielen.

Als Anlage mal die neueste Version - die kann auch direkt eine RES-Datei machen.

Nach dem Start einfach aus dem Explorer eine MP3-Datei in das Fenster ziehen, das weitere Vorgehen sollte dann klar sein.
Angehängte Dateien
Dateityp: zip mp3infoconv_125.zip (259,0 KB, 28x aufgerufen)
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: MCISendString: Datei aus Resource wiedergeben

  Alt 27. Nov 2005, 13:46
Danke, aber ich hab das schon mit dem TBassdllPlayer gelöst.
Da kann man mit der neuesten Version (Update 27.11.2005 !!!) auch MP3's aus einer Resource wiedergeben.
TBassdllPlayer.LoadFromResourceName
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: MCISendString: Datei aus Resource wiedergeben

  Alt 27. Nov 2005, 14:03
Zitat von Martin K:
Danke, aber ich hab das schon mit dem TBassdllPlayer gelöst.
Da kann man mit der neuesten Version (Update 27.11.2005 !!!) auch MP3's aus einer Resource wiedergeben.
TBassdllPlayer.LoadFromResourceName
Sicher geht das. Bei der von mir gezeigten Lösung braucht man aber keine zusätzliche DLL, alles läuft komplett mit Windows-eigenen "Hausmitteln".
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: MCISendString: Datei aus Resource wiedergeben

  Alt 28. Nov 2005, 00:36
Nee, beim BassdllPlayer hast du doch keine zusätzliche dll.
Ich nehme einfach die drei *.pas Dateien und binde sie über "BassdllPlayer" in uses ein.
einfach hier die 3 .pas Dateien rausholen

Das klappt prima, ohne DLL.


Bei deiner Methode müsste ich ja noch eine exe einbinden, dadurch wird mein Programm größer.

Außerdem geht das nicht mit PlaySound:
Ich habe nämlich ein Spiel programmiert, bei dem zwei Sounds parallel laufen müssen.
Ein Hintergrundsound (der ist als MP3 und wird mit dem BassdllPlayer abgespielt),
und ein kurzer Wave-Sound, der bei einem Tastendruck (KeyDown) abgespielt wird, mit PlaySound.

Beide Dateien sind als Resource eingebunden.
Und man kann bestimmt nicht zwei Sounds gleichzeitig mit PlaySound abspielen!!!

Aber trotzdem danke, dass du dich bemüht hast und mir dein Programm gepostet hast.
Das konntest du ja schließlich nicht wissen...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: MCISendString: Datei aus Resource wiedergeben

  Alt 28. Nov 2005, 07:33
Zitat von Martin K:
Nee, beim BassdllPlayer hast du doch keine zusätzliche dll.
Ich nehme einfach die drei *.pas Dateien und binde sie über "BassdllPlayer" in uses ein.
einfach hier die 3 .pas Dateien rausholen

Das klappt prima, ohne DLL.
Du brauchst keine Extra-DLL, weil sie in der "Bass_Dynamic.pas" binär eingebettet ist und auf dem System zur Laufzeit extrahiert wird. Das sind die 95288 Bytes in der Konstanten "BASSData", die in dein Programm eingebunden werden.

Zitat von Martin K:
Bei deiner Methode müsste ich ja noch eine exe einbinden, dadurch wird mein Programm größer.
Du hast es dir also nicht angesehen

Nein, du musst keine EXE einbinden, weil das Abspielen über PlaySound bzw. SndPlaySound läuft. Das Programm macht einfach durch Hinzufügen eines kleinenen RIFF-Headers (70 Bytes) aus deiner MP3-Datei eine WAVE-Datei, ohne die eigentlichen Sounddaten zu verändern. Nach diesem "Patch" kannst du die MP3-Datei mit PlaySound abspielen.

Zitat von Martin K:
Außerdem geht das nicht mit PlaySound:
Ich habe nämlich ein Spiel programmiert, bei dem zwei Sounds parallel laufen müssen.
Ein Hintergrundsound (der ist als MP3 und wird mit dem BassdllPlayer abgespielt),
und ein kurzer Wave-Sound, der bei einem Tastendruck (KeyDown) abgespielt wird, mit PlaySound.

Beide Dateien sind als Resource eingebunden.
Und man kann bestimmt nicht zwei Sounds gleichzeitig mit PlaySound abspielen!!!
Da hast du Recht, das geht über PlaySound m.W. nicht. Müsste man aber mal mit SND_ASYNC ausprobieren.

Zitat von Martin K:
Aber trotzdem danke, dass du dich bemüht hast und mir dein Programm gepostet hast.
Das konntest du ja schließlich nicht wissen...
War eh schon fertig
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: MCISendString: Datei aus Resource wiedergeben

  Alt 28. Nov 2005, 17:20
Na, schön... Hast recht!

Aber dafür hatte ich wenigstens in einem Punkt Recht !
Mit SND_ASync kannst du auch immer nur einen Sound abspielen.
Der Unterschied ist ja nur, dass er bei SND_Sync wartet, bis der Sound abgespielt wurde und dann weitermacht;
und bei SND_ASync läuft der Sound im Hintergrund und das Programm läuft ganz normal weiter.

Wenn ich eine Hintergrund-Musik im Spiel laufen lasse, dann muss ich ja sowieso SND_ASync verwenden - alles andere ist da doch Schwachsinn.
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:29 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