Entfernen Sie die ersten 30 Sekunden aus einer WAV-Datei
Stellen Sie die Startzeit auf 30 Sekunden ein und lassen Sie das Ende später als die Aufnahme. Das Ende wird am endgültigen vollständigen Probenrahmen festgeklemmt. Die Ausgabe beginnt bei dem Beispielbild, das 00:30 am nächsten liegt, und kopiert jedes verbleibende Bild, ohne es neu zu kodieren.
PCM- oder IEEE-Float-WAV, einschließlich RF64 und WAVE_FORMAT_EXTENSIBLE. Die Datei bleibt in diesem Tab.
Ein Startwert von 30 hält die Aufzeichnung ab 00:30 Uhr aufrecht und verwirft den Eröffnungsabschnitt.
Das Ende kann sicher später als die Feile liegen, da es am letzten vollständigen Rahmen festgeklemmt wird.
Wenn die Aufnahme 30 Sekunden lang oder kürzer ist, bleibt kein abspielbarer Abschnitt übrig und das Tool erklärt dies, anstatt eine leere Datei zu schreiben.
So funktioniert es
So wird es gemacht
- Prüfe, ob die ersten zwölf Bytes eine Little-Endian-RIFF- oder RF64-WAVE-Datei kennzeichnen. Big-Endian-RIFX wird abgelehnt, weil ein Kopieren in einen Little-Endian-Container die Samples verändern würde.
- Laufe unter Beachtung von Füllbytes durch die RIFF-Chunks, bis fmt und data gefunden sind. Bei RF64 stammt die 64-Bit-Audiolänge aus dem ds64-Chunk.
- Lies Kanalzahl, Abtastrate, Blockausrichtung und Bittiefe. Bei WAVE_FORMAT_EXTENSIBLE unterscheidet die Unterformat-GUID zwischen PCM und IEEE-Float.
- Prüfe, dass das Format eine feste Samplebreite hat und die Blockausrichtung zu Kanälen und Bytes pro Sample passt. Komprimierte oder widersprüchliche Dateien werden nicht geraten.
- Teile die data-Länge durch die Blockausrichtung, um die Zahl vollständiger Abtastframes und daraus die Aufnahmedauer zu erhalten.
- Multipliziere Start- und Endzeit mit der Abtastrate und runde auf vollständige Frames. Ein Ende hinter der Aufnahme wird begrenzt; ein Start am oder hinter dem Ende wird abgelehnt.
- Kopiere den gewählten Framebereich in 4-MB-Stücken in eine neue WAV, übernimm den Formatblock und berechne RIFF- und data-Größen neu.
- Lasse Metadaten weg, deren Zeitangaben zur ungeschnittenen Aufnahme gehören, und biete die neue WAV zum Download an.
Wovon es ausgeht
- Unterstützt werden PCM und IEEE-Float in RIFF oder RF64, einschließlich WAVE_FORMAT_EXTENSIBLE. Komprimierte WAV-Formate und RIFX erfordern Decodierung oder Byte-Umsortierung und werden abgelehnt.
- Eine Zeit kann zwischen zwei Abtastframes liegen und wird auf den nächsten vollständigen Frame gerundet. Bei 44,1 kHz beträgt die größte Abweichung etwa 0,011 Millisekunden.
- Ein Ende hinter der Datei wird auf den letzten vollständigen Frame begrenzt. Bleibt nach dem Start kein Audio, wird keine leere WAV erzeugt.
- Abtastrate, Kanäle, Bittiefe, Formatblock und die behaltenen Samplebytes werden kopiert. Es gibt keine Pegeländerung, Überblendung, Dither- oder Codec-Stufe.
- Metadaten werden absichtlich nicht kopiert. Marker, Schleifen und Broadcast-Zeitreferenzen würden sonst auf die alte Zeitachse verweisen.
- Der data-Chunk muss aus vollständigen Frames bestehen und in die Datei passen. Ein angeschnittener letzter Frame gilt als beschädigt.
- Eingabe und Ausgabe liegen vorübergehend gleichzeitig im Arbeitsspeicher. Deshalb ist die Eingabe auf 256 MB begrenzt.
Fragen
Was passiert, wenn die WAV-Datei kürzer als 30 Sekunden ist?
Da nach dem angeforderten Startpunkt kein Ton zu hören ist, weigert sich das Tool, eine leere WAV-Datei zu erzeugen, und fragt nach einer früheren Startzeit.
Muss ich die WAV-Länge kennen, bevor ich die ersten 30 Sekunden entferne?
Nein. Das vorausgefüllte Ende ist bewusst länger als bei den meisten Aufnahmen und wird auf das tatsächlich letzte Bild begrenzt, nachdem der WAV-Header gelesen wurde.
Quellen
Die vollständige Methode, das Rechenbeispiel und alle Annahmen hinter diesem Ergebnis stehen auf WAV-Audio schneiden.