Heim >Backend-Entwicklung >PHP-Tutorial >PHP Master | Extrahieren Sie einen Auszug aus einer WAV -Datei

PHP Master | Extrahieren Sie einen Auszug aus einer WAV -Datei

Jennifer Aniston
Jennifer AnistonOriginal
2025-02-24 10:39:14841Durchsuche

PHP Master | Extract an Excerpt from a WAV File

Während PHP dafür bekannt ist, Webseiten und -anwendungen zu erstellen, hat es viel mehr als das. Ich musste kürzlich ein Audio aus einer WAV -Datei dynamisch extrahieren und dem Benutzer es ermöglichen, sie über den Browser herunterzuladen. Ich habe versucht, eine Bibliothek zu finden, die meinen Bedürfnissen entsprach, aber ich war nicht erfolgreich und musste meinen eigenen Code schreiben. Dies ist eine großartige Gelegenheit, sich in die WAV -Dateistruktur zu befassen. In diesem Beitrag werde ich das WAV -Dateiformat kurz skizzieren und die Bibliothek, die ich entwickelt habe, erklären: Audo WAV -Extraktor.

Schlüsselpunkte

  • WAV -Audio -Dateiformat (WAV) ist ein Standard, das von Microsoft verwendet wird, um digitale Audiodaten zu speichern, und besteht aus Blöcken, die verschiedene Teile einer Audiodatei darstellen. "Riff", "FMT" und "Daten" sind die wichtigsten Blöcke.
  • Außero WAV -Extraktor ist eine PHP -Bibliothek, mit der Fragmente aus WAV -Dateien extrahiert werden können. Es erfordert PHP 5.3 oder höher und kann das Fragment auf der lokalen Festplatte speichern, es über den Browser des Benutzers herunterladen oder als Zeichenfolge für die spätere Verarbeitung zurückgeben.
  • Die
  • Die Außero -WAV -Extraktorbibliothek enthält Methoden wie downloadChunk(), saveChunk() und getChunk(), um den Extraktionsprozess zu verwalten. Jede Methode erfordert das Extrahieren der Start- und Endzeitparameter des Fragments.
  • Die Dauer der WAV -Datei kann mit der folgenden Formel berechnet werden: <code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>. Diese Informationen können zusammen mit anderen wichtigen Daten aus den Blöcken "Daten" und "FMT" der WAV -Datei abgerufen werden.

WAV -Formatübersicht

Wave Audio -Dateiformat, auch als Wave oder WAV bezeichnet, ist der von Microsoft zum Speichern digitale Audiodaten verwendete Dateiformatstandard. Eine WAV -Datei besteht aus verschiedenen Blöckenarten, die verschiedene Teile der Audiodatei darstellen. Sie können sich dieses Format als HTML -Seite vorstellen: Der erste Block ist wie der Teil der Webseite <section></section> befindet sich am Teil. In diesem Fall bezieht sich "Block" auf den Teil der in der Datei enthaltenen Daten. Der wichtigste Formatblock ist "Riff", das die Anzahl der Bytes der Datei enthält. Jeder Block muss mindestens zwei Felder haben: ID und Größe. Zusätzlich muss jedes gültige WAV mindestens zwei Blöcke haben: FMT und Daten. Der erste steht normalerweise am Anfang der Datei, aber nach dem Riff. Jeder Block verfügt über ein eigenes Format und ein eigenes Feld, und ein Feld bildet einen Unterteil des Blocks. Das WAV -Format wurde in der Vergangenheit nicht vollständig spezifiziert, wodurch die Datei Header enthält, die den Regeln nicht strikt befolgen. Wenn Sie also an Audio arbeiten, stellen Sie möglicherweise fest, dass eine Datei ein oder mehrere Felder hat und selbst die wichtigsten Felder auf Null oder falsche Werte eingestellt sind. Um Ihnen eine Vorstellung davon zu geben, was sich in einem Block befindet, ist der erste Block jeder WAV -Datei Riff. Die ersten 4 Bytes enthalten die Zeichenfolge "Riff", und die nächsten 4 Bytes enthalten die Dateigröße abzüglich der 8 Bytes, die von diesen beiden Datenteilen verwendet werden. Die letzten 4 Bytes des Riff -Blocks enthalten die Zeichenfolge "Welle". Sie können erraten, was der Zweck dieser Daten ist. In diesem Fall können Sie sie verwenden, um festzustellen, ob die Datei, die Sie analysieren, tatsächlich eine WAV -Datei ist, wie ich es in der <section></section> -Methode der WAV -Klasse der Bibliothek getan habe. Eine weitere interessante Sache zu erklären ist, wie die Dauer einer WAV -Datei berechnet werden kann. Alle Informationen, die Sie benötigen, können aus den beiden zuvor genannten Blöcken abgerufen werden, nämlich: Datenblockgröße, Stichprobenrate, Anzahl der Kanäle und Anzahl der Bits pro Probe. Die Formel zur Berechnung der Dateizeit (in Sekunden) lautet wie folgt: setFilePath()

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Angenommen, wir haben:

<code>dataChunkSize = 4498170
sampleRate = 22050
channelsNumber = 16
bitsPerSample = 1</code>
Wenden Sie diese Werte auf die Formel an und wir erhalten:

<code>time = 4498170 / (22050 * 1 * 16 / 8)</code>
Das Ergebnis beträgt 102 Sekunden (abgerundet). Eingehende Erläuterung der Struktur der WAV-Datei geht über den Rahmen dieses Artikels hinaus. Wenn Sie es weiter studieren möchten, lesen Sie diese Seiten, die ich beim Umgang mit diesem zu tun hatte:

  • https://www.php.cn/link/21c1da87c1afdd4ed2836bdb521bea78
  • https://www.php.cn/link/3493d96f8fcb16313a77ecfd294734c9

Was ist Außero WAV -Extraktor

Außero WAV -Extraktor ist eine PHP -Bibliothek, mit der Sie Fragmente aus WAV -Dateien extrahieren können. Sie können das extrahierte Fragment auf Ihrer lokalen Festplatte speichern, es über den Browser des Benutzers herunterladen oder als Zeichenfolge für die spätere Verarbeitung zurückgeben. Die einzige besondere Anforderung für diese Bibliothek ist Php 5.3 oder höher, da ein Namespace verwendet wird. Alle Klassen der Bibliothek befinden sich im Wavextractor -Verzeichnis. Sie werden jedoch feststellen, dass es ein zusätzliches Lader -Verzeichnis gibt, in dem Sie den Autoloader der Bibliothek finden können. Der Einstiegspunkt des Entwickler

  • : Laden Sie den Clip downloadChunk() herunter
  • : Speichern Sie es auf der Festplatte saveChunk()
  • : Suchen Sie das Fragment als Zeichenfolge getChunk()
Die ersten beiden Parameter all dieser Methoden sind gleich:

und $start, die die Start- und Endzeit (in Millisekunden) des zu extrahierenden Teils darstellen. Zusätzlich akzeptieren $end und downloadChunk() einen optionalen dritten Parameter, um den Namen des extrahierten Fragments festzulegen. Wenn kein Name angegeben ist, generiert die Methode selbst einen Namen im Format "InputFileName-Start-End.wav". Im Wavextractor -Verzeichnis gibt es zwei Unterordner: Nutzen, die die Konverterklasse mit bestimmten Dienstprogrammmethoden enthält. Letzteres enthält die Klassen WAV, Chunk und Chunkfield. Die erste repräsentiert, wie Sie vielleicht erwarten, eine WAV -Datei, die aus einem oder mehreren Blöcken (Chunk -Typ) besteht. Mit dieser Klasse können Sie WAV -Header, Audiodauern und einige andere nützliche Informationen abrufen. Die wichtigste Methode ist saveChunk(), die den angegebenen Audio -Teil durch Lesen von Bytes in der Datei abruft. Die Chunk -Klasse repräsentiert einen Block einer WAV -Datei, die durch eine dedizierte Klasse erweitert wird, die im Chunk -Ordner enthalten ist. Letzteres unterstützt nicht alle vorhandenen Blocktypen, nur die wichtigsten Blocktypen. Der nicht identifizierte Teil wird von der allgemeinen Klasse verwaltet und während des gesamten Prozesses einfach ignoriert. Die letzte beschriebene Klasse ist Chunkfield. Wie ich betonte, hat jeder Block seinen eigenen Typ und ein eigenes Feld, und jedes Feld hat eine andere Länge (in Bytes) und ein Format. Dies ist eine sehr wichtige Nachricht, da Sie die richtigen Parameter übergeben müssen, um Bytes mithilfe von PHP -Funktionen von getWavChunk() und pack() korrekt zu analysieren, andernfalls erhalten Sie einen Fehler. Um die Daten zu verwalten, habe ich beschlossen, sie in eine Klasse einzuwickeln, die das Format, die Größe und die Werte jedes Feldes enthält. unpack()

So verwenden Sie Außero WAV -Extraktor

Sie können den "Außero -WAV -Extraktor" über Komponist erhalten, die folgenden Zeilen zu Ihrer

-Datei hinzufügen und den Befehl Installation ausführen: composer.json

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Composer lädt die Bibliothek in das Verzeichnis

des Projekts herunter und platziert sie. Alternativ können Sie die Bibliothek direkt von ihrem Repository herunterladen. Um das Fragment zu extrahieren und den Download in den Browser des Benutzers zu erzwingen, schreiben Sie einen Code ähnlich wie folgt: vendor/audero

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>

In der ersten Zeile habe ich den Komponisten -Autoloader eingeschlossen und dann den Wert festgelegt, den ich verwenden werde. Wie Sie sehen können, stelle ich die Quelldatei, den Ausgabepfad einschließlich des Dateinamens und den Zeitbereich an, den ich extrahieren möchte. Dann habe ich eine Instanz von Auderowavextractor erstellt, die Quelldatei als Parameter genommen und die downloadChunk() -Methode bezeichnet. Beachten Sie, dass Sie ihn immer als Variable festlegen müssen, da der Ausgangspfad von Referenz übergeben wird. Schauen wir uns ein anderes Beispiel an. Ich werde Ihnen zeigen, wie Sie einen Zeitbereich auswählen und die Datei auf Ihrer lokalen Festplatte speichern. Außerdem werde ich den im Projekt enthaltenen Autoloader verwenden.

<code>dataChunkSize = 4498170
sampleRate = 22050
channelsNumber = 16
bitsPerSample = 1</code>

Abgesehen von der Loader -Konfiguration ist dieses Code -Snippet dem vorherigen Code -Snippet sehr ähnlich. Tatsächlich habe ich nur zwei Änderungen vorgenommen: Die erste ist die genannte Methode, saveChunk() anstelle von downloadChunk(), und das zweite ist, dass ich den Ausgabedateinamen nicht festgelegt habe (es wird das zuvor erläuterte Standardformat verwendet).

Schlussfolgerung

In diesem Beitrag zeige ich Ihnen "Außero -WAV -Extraktor" und wie Sie leicht ein oder mehrere Fragmente aus einer bestimmten WAV -Datei extrahieren können. Ich habe die Bibliothek für ein Arbeitsprojekt geschrieben, für das eine sehr enge Reihe von Kacheln erforderlich ist. Wenn der WAV oder sein Header stark korrupt ist, kann die Bibliothek fehlschlagen, aber ich habe den Code geschrieben, um zu versuchen, den Fehler nach Möglichkeit wiederherzustellen. Verwenden Sie die im Repository enthaltenen Demos und Dateien, da ich sie unter der CC BY-NC 3.0-Lizenz veröffentlicht habe.

(Folgendes ist ein Pseudo-Originalwerk im ursprünglichen FAQ-Teil, das die ursprüngliche Bedeutung beibehält und die Sprache anpasst)

FAQs (FAQ) zum Extrahieren von Fragmenten aus WAV -Dateien

Wie extrahiere ich bestimmte Teile einer WAV -Datei?

Um bestimmte Teile einer WAV -Datei zu extrahieren, müssen Sie eine Audio -Bearbeitungssoftware wie Audacity verwenden. Öffnen Sie die WAV -Datei in Audacity, verwenden Sie das Auswahltool, um den Abschnitt zu extrahieren, und wählen Sie dann die Auswahl der Exportierung aus dem Menü Datei aus. Sie können dann den ausgewählten Teil als neue WAV -Datei speichern.

Kann ich Daten aus WAV -Dateien in einer Programmiersprache extrahieren?

Ja, Sie können Daten aus WAV -Dateien mithilfe einer Programmiersprache wie Python extrahieren. Bibliotheken wie scipy.io.wavfile und wave können zum Lesen von WAV -Dateien und zum Extrahieren von Daten verwendet werden. Sie können diese Daten dann entsprechend Ihren Anforderungen bedienen.

Wie extrahiere ich geheime Informationen aus Audiodateien?

Extrahieren von geheimen Informationen aus einer Audiodatei umfasst einen Prozess namens Steganography. Dieser Prozess beinhaltet das Verstecken von Informationen in nicht geheimen Text oder Daten. Es gibt verschiedene Software und Tools, mit denen Sie versteckte Nachrichten aus Audiodateien extrahieren können.

Kann ich eine Stimme oder eine Stimme aus einer WAV -Datei extrahieren?

Extrahieren eines Tons aus einer WAV -Datei ist eine komplexe Aufgabe, die die Trennung von Audioquellen oder die Sprachabteilung beinhaltet. Dies kann unter Verwendung erweiterter Signalverarbeitungstechniken und Algorithmen für maschinelles Lernen erreicht werden. Software wie Audacity kann in gewissem Maße helfen, aber für komplexere Aufgaben müssen Sie möglicherweise fortschrittlichere Tools oder Dienste verwenden.

Welche Funktion in R extrahiert DB -Werte aus einer WAV -Datei?

In R können Sie das Tuner -Paket verwenden, um WAV -Dateien zu lesen und Daten zu extrahieren. Die readWave() -Funktion kann zum Lesen einer WAV -Datei verwendet werden, und das generierte Objekt kann zum Zugriff auf DB -Werte verwendet werden. Möglicherweise müssen Sie jedoch den Amplitudenwert mit der entsprechenden mathematischen Formel in DB konvertieren.

Wie extrahiert man Frequenzinformationen aus WAV -Dateien?

Extrahieren von Frequenzinformationen aus einer WAV -Datei beinhaltet die Durchführung einer Fourier -Transformation der Daten. Dies kann mit der Numpy Library in Python oder der FFT -Bibliothek in R. erfolgen Die Ergebnisse der Fourier -Transformation ergeben Ihnen die Frequenzkomponenten des Audiosignals.

Kann ich Metadaten aus WAV -Dateien extrahieren?

Ja, Sie können Metadaten aus WAV -Dateien extrahieren. Dies kann Informationen wie Stichprobenrate, Bittiefe, Anzahl der Kanäle und Dauer umfassen. Dies kann mithilfe von Audio -Verarbeitungsbibliotheken in verschiedenen Programmiersprachen erfolgen.

Wie extrahiere ich mehrere Teile aus einer WAV -Datei?

Um mehrere Teile aus einer WAV -Datei zu extrahieren, können Sie Audio -Bearbeitungssoftware wie Audacity verwenden. Sie können jeden Teil auswählen, den Sie als neue Datei extrahieren und exportieren möchten. Dieser Vorgang kann für jeden Teil wiederholt werden, um extrahiert zu werden.

Kann ich Audio aus einer Videodatei extrahieren und als WAV -Datei speichern?

Ja, Sie können Audio aus einer Videodatei extrahieren und als WAV -Datei speichern. Dies kann mit Videobearbeitungssoftware oder Conversion -Tools erfolgen. Dieser Vorgang umfasst das Öffnen einer Videodatei, das Extrahieren einer Audiospur und das Speichern als WAV -Datei.

Wie kann man eine WAV -Datei in ein anderes Audio -Format konvertieren?

Um eine WAV -Datei in ein anderes Audio -Format umzuwandeln, können Sie Audio Conversion Software oder Tools verwenden. Mit diesen Tools können Sie eine WAV -Datei öffnen und in einem anderen Format speichern, z. B. MP3, FLAC oder AAC. Der Konvertierungsprozess umfasst normalerweise die Auswahl des Ausgangsformats und die Einstellung der erforderlichen Massen- oder Bitrate.

Das obige ist der detaillierte Inhalt vonPHP Master | Extrahieren Sie einen Auszug aus einer WAV -Datei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn