Schneiden Sie eine WAV-Datei ohne Qualitätsverlust
Ja. Wählen Sie die Start- und Endzeit und laden Sie dann eine neue WAV-Datei herunter, deren beibehaltene Beispielbilder Byte für Byte vom Original kopiert werden. Da das Audio niemals dekodiert oder neu kodiert wird, ändern sich seine Abtastrate, Bittiefe, Kanäle und Abtastwerte nicht.
PCM- oder IEEE-Float-WAV, einschließlich RF64 und WAVE_FORMAT_EXTENSIBLE. Die Datei bleibt in diesem Tab.
Der Schnitt erfolgt verlustfrei, da komplette Beispielbilder kopiert und nicht durch einen Audio-Codec geleitet werden.
Die neue Datei behält den ursprünglichen Formatblock bei, lässt aber bewusst Tags, Markierungen und andere Metadaten zurück.
Eine angeforderte Zeit wird auf den nächsten Sample-Frame gerundet, normalerweise eine Differenz von weit weniger als einer Millisekunde.
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
Verändert ein verlustfreier WAV-Schnitt die Samplerate oder Bittiefe?
Nein. Die Ausgabe kopiert den ursprünglichen Formatblock und vollständige Audio-Frames, sodass die Abtastrate, die Kanalanzahl, die Container-Bittiefe und die einzelnen Abtastwerte gleich bleiben.
Ist eine Byte-für-Byte-Audiokopie auch eine Byte-für-Byte-Dateikopie?
Nein. Die beibehaltene Audio-Nutzlast ist identisch, aber der umgebende WAV-Container wird mit neuen Größenfeldern und ohne Metadatenblöcke neu erstellt, sodass die gesamten Dateien unterschiedliche Prüfsummen haben.
Quellen
Die vollständige Methode, das Rechenbeispiel und alle Annahmen hinter diesem Ergebnis stehen auf WAV-Audio schneiden.