Entwickler-Ecke

Multimedia / Grafik - wav / Audio schneiden


longhugo - Do 03.11.05 01:08
Titel: wav / Audio schneiden
Hallo!

Ich möcht einen Teil einer Wav Datei herausschneiden. Wav Start und Ende
habe ich als Millisekunden vorliegen. Wav als Datei. Der Mediaplayer hat ja mit .Position schon die Info
wo er z.B. hinspringen soll. Kann man das nutzen für einen Cut? oder muss man
das ganze per Stream und Pointern machen? Ich suche praktisch nach einer Funktion,
wie z.B. Mediaplayer.SaveToFile(wav_start, wav_end) ...oder so ähnlich.

Hat jemand einen handlichen Tipp?

Ciao & Danke im voraus

Hugo


Yogu - Mo 28.05.07 12:57

Genau das gleiche Problem habe ich auch. Schade, dass keiner geantwortet hat. Aber ich glaube, da ist der MediaPlayer einfach zu simpel. Ich denke, da würde eine Unit, z.B. audio, gut passen.

Kennt jemad so was? Ich denke da an so eine Klasse, z.B.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
TAudio = class
  procedure StartRecording;
  procedure StopRecording;
  procedure Save;
  procedure Open;
  procedure Cut(Start, End: Integert);
  procedure Add(FileName: String; Pos: Integer);
  procedure SetVolume(var Volume: Integer);
  function GetVolume: Integer;
  procedure Turn; //Rückwärts spielen
end;


F34r0fTh3D4rk - Mo 28.05.07 13:07

oder man nimmt einfach die Suche in: Delphi-Forum, Delphi-Library BASS.DLL

mfg


Gausi - Mo 28.05.07 13:08

Gehts dir auch um Wavs? Ich frage, weil ich vor kurzem nen Cutter für mp3-Dateien geschrieben habe. Da weiß ich ganz gut, wie das geht, mit Wav kenne ich mich nicht so gut aus.


Yogu - Mi 30.05.07 22:02

@Gausi: Natürlich, MP3 wär ja auch nicht schlecht, hätte den kleinen Nebeneffekt namens Platzspeichern :wink: Kann man mit TMediaPlayer eigentlich auch MP3 aufnehmen? Hab das nie ausprobiert. Kannst du den Cutter mal irgendwo pasten? Wär mir sehr hilfreich.


Gausi - Do 31.05.07 09:09

Klar kann ich den posten. :D

Das Ding ist nicht ganz perfekt, aber prinzipiell funktioniert der, ohne die Datei neu zu kodieren, d.h.: es gibt keinen Qualitätsverlust. Bei Dateien mit variabler Bitrate wird ein evtl. vorhandener XING-Header erkannt und an die neue Länge angepasst, allerdings wird das Sprungstellen-Array genullt. Da weiß ich nämlich nicht genau, wie das auszusehen hat. Die Datei bleibt afaik aber trotzdem zu 100% gültig.
Als Erweiterung könnte man die ID3Tags übernehmen. Weitere Kommentare im Code. ;-)

Edit: Wer suchet, der findet, und ist doch nicht am Ziel. Hier war mal ein Stück Code, das dem Weihnachtsmann auf seiner Suche nach dem Ziel helfen kann, doch der böse Grinch hat ihn versteckt, und stattdessen ein Bild hinterlassen. Aber der Grinch spielt gerne verstecken, und konnte es auch hier nicht lassen.


Edit2: Original-Code wieder eingefügt. Weihnachten 2007 ist vorbei :D.


Gausi - Sa 02.06.07 09:54

Die Diskussion bzgl. einer neuen Delphi-Version habe ich hierhin [http://www.delphi-forum.de/viewtopic.php?t=73344] abgetrennt.


neo - Sa 05.06.10 21:27

Muss mal den alten Thread hier aufwärmen:
Der Splitter funktioniert super, es gibt nur Probleme wenn ich eine große MP3 Datei (~200mb) laden möchte. Dann kommt nämlich der "Fehler bei Bereichsprüfung" Error.
=> Habe mal probiert das Problem zu finden, leider ohne Erfolg..