Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MP3 von CD in Speicher bufferweise lesen und abspielen (https://www.delphipraxis.net/61171-mp3-von-cd-speicher-bufferweise-lesen-und-abspielen.html)

Avax2k 17. Jan 2006 22:13

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
nein eben nicht weil beim streaming die datei erstmal im hintergrund komplett auf die platte geklatscht wird und später dann gelöscht wird..meine datei soll aber NIEMALS auf der Platte sein ..und auch nicht im Speicher..wenn dann nur im Speicher und zwar stückchenweise damit man nie eine komplette Datei haben kann :-)

bigg 17. Jan 2006 22:47

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
Also, du willst den Media Player starten und einen Song von CD abspielen. Dieser Song liegt als Datei vor.
Außerdem soll der Song nicht auf irgendeinem Datenträger landen, um ihn beispielsweise zu speichern, weder im Ab-Speicher noch auf der Festplatte. Und was soll das verhindern? Das jemand deine Songs nicht klauen kann? Blödsinn, das kann er so oder so. :stupid:

Avax2k 18. Jan 2006 00:41

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
Über die Philosophie weshalb und wieso und wozu und weswegen braucht man sich nicht unterhalten das ist ja nicht die Frage gewesen.. aber ein Grund ist das Verhindern von Schreibprozessen auf der Festplatte denn je größer das Datenvolumen umso schneller nutzt sich die Platte ab, wenn da ständig zugegriffen werden muss..Speicher ist da was anderes eben nicht maschinell.

ich dachte es könnte so gehen...

was fehlt da noch..zum Optimieren wäre super wenn mir jemand auch dabei unter die Arme greifen könnte

Delphi-Quellcode:
var MemStream: TMemoryStream;
MemStream := nil;
try
  MemStream := TMemoryStream.Create;
  Stream.Position := 0;
  while Stream.Pos < Stream.Size do begin
    MemStream.Clear;
    if (Stream.Pos+10240000) <= Stream.Size then
      MemStream.CopyFrom(Stream,10240000)
    else
      MemStream.CopyFrom(Stream,Stream.Size - Stream.Pos);
  end;
finally
  MemStream.Free;
end;
nur wie bekomme ich jetzt die Datei als das MemStream ..von mir aus ist der Pfad der Datei
C:\Test.mp3

Der_Unwissende 18. Jan 2006 08:13

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
Zitat:

Zitat von Avax2k
nur wie bekomme ich jetzt die Datei als das MemStream ..von mir aus ist der Pfad der Datei
C:\Test.mp3


Delphi-Quellcode:
const FILE_NAME = 'C:\Test.mp3';
...
 MemStream := TMemoryStream.Create;
 MemStream.LoadFromFile(FILE_NAME);
Aber ganz ehrlich, ich hoffe du hast einen sinnvolleren Grund als die Abnutzung der Festplatte durch Schreibzugriffe. Da müsste die Platte aber schon ziemlich viele Zugriffe gehabt haben, damit dass passiert was du hier sagst. Und da du sicherlich die Speicherverwaltung dem Betriebssystem überlässt, hast du gar keinen Einfluss darauf, dass dein MemoryStream überhaupt nur RAM alloziert. Gut, wahrscheinlich hast du den virtuellen Speicher abgeschaltet, um Schreibzugriffe auf die Platte zu verhindern, aber dann wäre ja noch das booten, da schiebt Windows schon total unnötig und häufig Dateien hin und her, da soll der Start optimiert werden...
Also ich weiß nicht, in wie weit dass schon in allen Platten steckt, aber in der Regeln benutzen Festplatten sehr viel Intelligenz beim Schreiben. Die versuchen natürlich optimale Performance zu garantieren, aber auch Konsistenz der Daten ist nicht gerade unwichtig. Deshalb wird auch ein wenig verteilt geschrieben. Die Logik deiner Platte versucht ähnlich wie bei Flashspeicher nicht immer an die gleiche Stelle zu schreiben sondern möglichst gleich verteilt über die gesamte Platte zu kommen.

Wie gesagt, ist eher OT und ich finde deine eigentliche Frage auch sinnvoll, aber ich hoffe du hast da einen besseren Grund.

Gruß Der Unwissende

FriFra 18. Jan 2006 08:48

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
Wie wäre es mit einem kleinen Webserver in deinem Decoder? Du ruftst dann einfach http://localhost:DeinPort/mystream.mp3 auf und dein Webserver muss dann nur noch den Stream liefern ;)
Wobei... dann landet das Ergebnis im Cache, außer der Webserver verwendet ssl :?

Avax2k 18. Jan 2006 10:33

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
Erstmal vielen Dank für die Hilfestellungen :-)..

Die Festplattenbenutzung ist natürlich nicht nur das Einzige..es ist auch die Rechteverteilung der jeweiligen Rechner, dabei will ich es einfach verhindern, dass etwas auf der Platte abgelagert wird, was auf CD schon existiert..auch wenn dies nur Sessionbedingt ist, die heutigen PCs sind da schnell genug alsdass man eben mit Festplatte "vorbuffern" müsste.

Der eigene kleine Server ist keine gute Idee da ja wie du bereits sagst die Daten gecached werden und zweitens auch alle Firewalls gleich melden, dass da was versucht ausgeführt zu werden und wenn ein User eben auf nein klickt dann kann er die Daten nicht mehr empfangen.

ich versuch es mal mit den bisher erfolgten Ratschlägen umzusetzen...werde somit gleich antworten, ob dies so klappt wie ich das mir vorgestellt hatte oder eben immer noch nicht realisiert werden konnte.

Avax2k 18. Jan 2006 11:45

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
so bin nun eine ganze Stunde daran gesessen und weiss einfach nicht wie ich nun die Datei starten soll aus dem Speicher....

Shellexecute funktioniert da nicht..ich kann ja File_Name nehmen aber dann öffnet er die Datei direkt von da wo sie ist und eben nicht vom Speicher aus..

kann mir da jemand helfen?

FriFra 18. Jan 2006 11:52

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
Eben...

Du kannst dem Mediaplayer keinen Memorystream schicken, da es dafür einfach keine Schnittstelle gibt ;)
Es gibt IMHO nur 2 Möglichkeiten:
1. Datei
2. Stream über einen Webserver/Mediaserver

Avax2k 18. Jan 2006 12:01

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
ja das habe ich mir gerade auch gedacht..somit ist das ganze Vorhaben zum Scheitern verurteilt.. naja eine Frage bleibt dann noch.


kann ich die Datei auf der Festplatt die temporär entsteht vor Zugriffen schützen..sprich so lange die File abgespielt wird kann man sie nicht anklicken oder kopieren oder sonst was und nach dem abspielen wird sie dann gelöscht ?

FriFra 18. Jan 2006 12:06

Re: MP3 von CD in Speicher bufferweise lesen und abspielen
 
Wenn Du es hinbekommst, deinen Server mit SSL zu sichern, dann speichert der Browser das ganze IMHO nicht so offen im Cache.
Obwohl... Es bliebe noch der Weg über einen Treiber ein eigenes Temporäres Laufwerk zu erzeugen... oder ähnlich wie filemon (sysinternals.com) alle Dateizugriffe abzufangen und ggf. den Zugriff zu verweigern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr.
Seite 2 von 4     12 34      

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