Forum: PC-Programmierung Große Audiodateien im Arbeitsspeicher/Ramdisk bearbeiten (.NET)


von Jens P. (Gast)


Lesenswert?

Moin moin,

ich habe eine Software, die via MCI Wavefiles aufzeichnet, abspielt, 
überschreibt usw (ein Wave-Recoder mit hin- und herspulen).

Als platten kommen SSDs zum Einsatz. Ich wollte nun deshalb wenn möglich 
nicht mehr den ganzen Tag auf der Platte rumeditieren, sondern das ganze 
vielleicht im Arbeitsspeicher erledigen.

Die Kisten haben 2gb RAM und ausser meiner Anwendung (unter Win7) läuft 
nichts. Da sollte es also möglich sein sagen wir mal 300MB als 
"Programmcache" abzuzwacken (das Speichern dauert regelmässig am 
längsten und die Dateien existieren nur temporär).

Mir schwant nun folgendes vor: Zu Beginn wird die O-Tonspur (MP3) sowie 
die Wave-Spur mit der Verdolmetschung (in die der Student 
"reinschreibt") in den Arbeitsspeicher geladen. Aus dem RAM heraus wird 
die MP3 abgespielt und gleichzeitig die Wave-Datei aufgenommen. Später 
dann auch beides zusammen abgehört. Nach dem Beenden des Programmes 
gehen ohnehin alle temporären Dateien verloren.

Lässt sich sowas irgendwie direkt unter .NET erledigen?
Oder müsste ich von Hand eine RAM-Disk anlegen? (unschöne Lösung, da ich 
das händisch bei zig stationen machen müsste und die Ramdisk dann ja 
immer den gleichen Buchstaben haben müsste etc).

Würd mich über ein paar Anregungen sehr freuen.

Gruß
Jens

von Peter II (Gast)


Lesenswert?

Jens Plappert schrieb:
> Lässt sich sowas irgendwie direkt unter .NET erledigen?
ich denke schon

> Oder müsste ich von Hand eine RAM-Disk anlegen? (unschöne Lösung, da ich
> das händisch bei zig stationen machen müsste und die Ramdisk dann ja
> immer den gleichen Buchstaben haben müsste etc).
die Frage ist doch warum musst es denn eine RamDisk sein? Warum kannst 
du die Sache nicht einfach so im Ram machen? Es gibt doch ein C# 
MemoryStream und zur not einfach arrays.

von Jens P. (Gast)


Lesenswert?

Nun, ich habe das ganze ja schon ein paar Jährchen laufen und alle 
möglichen Funktionen sind auf Dateizugriffe ausgelegt. Die 
ursprünglichen Maschinen waren eh an der unteren Grenze des zumutbaren 
was den Hauptspeicher betrifft und von daher wurd halt alles mit 
Dateizugriffen auf die Platte gelöst.

Es wäre jetzt halt einfach ne Nummer praktischer nicht alles umkrempeln 
zu müssen, um in den Arbeitsspeicher statt auf die Platte zu schreiben.

von Peter II (Gast)


Lesenswert?

Jens Plappert schrieb:
> Nun, ich habe das ganze ja schon ein paar Jährchen laufen und alle
> möglichen Funktionen sind auf Dateizugriffe ausgelegt.

dann wird es mal zeit zu erneuern

> Es wäre jetzt halt einfach ne Nummer praktischer nicht alles umkrempeln
> zu müssen, um in den Arbeitsspeicher statt auf die Platte zu schreiben.
dafür aber wesentlich schneller und sauberer. Was ist wenn der user 
keine Admin rechte hat für eine Ramdisk? Oder es gar keine Ramdisk für 
Win8 RT gibt?

von Jens P. (Gast)


Lesenswert?

Ich muss dazu sagen, dass ich hier zwar einigermassen komplexe Projekte 
betreue, von Haus aus aber kein Informatiker /Programmierer bin. Ist 
soweit alles selbst angeeignet.

Würde das heissen, dass ich komplett auf das MCI verzichten müsste, oder 
gibt es da Varianten die Zugriffe der WIN-API auch in den Speicher 
"umzuleiten".

Ich bin gerade an einem Punkt, wo mein eigenes Wissen einfach aufhört.

von Peter II (Gast)


Lesenswert?

Jens Plappert schrieb:
> Würde das heissen, dass ich komplett auf das MCI verzichten müsste, oder
> gibt es da Varianten die Zugriffe der WIN-API auch in den Speicher
> "umzuleiten".

leider habe ich auch noch nie mit MCI gearbeitet, mit welche funktionen 
nutzt du dann da um dateien zu öffnen?

von Arc N. (arc)


Lesenswert?

NAudio sollte das alles zusammen mit dem erwähnten MemoryStream können
http://naudio.codeplex.com/documentation

von bluppdidupp (Gast)


Lesenswert?

Mich wundert, das MCI in der msdn nicht längst als deprecated markiert 
ist.

von Christopher (Gast)


Lesenswert?


von Jens P. (Gast)


Lesenswert?

Danke für die Tipps.

Ich werd mir das dann demnächst mal genauer anschauen.

Gruß
Jens

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.