PHP Master | Extraire un extrait d'un fichier WAV
Bien que PHP soit connu pour créer des pages et des applications Web, elle a bien plus que cela. J'ai récemment besoin d'extraire dynamiquement un audio à partir d'un fichier WAV et de permettre à l'utilisateur de le télécharger via le navigateur. J'ai essayé de trouver une bibliothèque qui convenait à mes besoins, mais je n'ai pas réussi et j'ai dû écrire mon propre code. C'est une excellente occasion de creuser dans la structure des fichiers WAV. Dans cet article, je décrirai brièvement le format de fichier WAV et expliquerai la bibliothèque que j'ai développée: Extracteur WAV aude.
Points clés
- Le format de fichier audio de forme d'onde (WAV) est une norme utilisée par Microsoft pour stocker les données audio numériques et se compose de blocs représentant différentes parties d'un fichier audio. "Riff", "FMT" et "Data" sont les blocs les plus importants.
- Extracteur WAV AudeRo est une bibliothèque PHP qui permet d'extraire des fragments à partir de fichiers WAV. Il nécessite PHP 5.3 ou version ultérieure et peut enregistrer le fragment sur le disque dur local, le télécharger via le navigateur de l'utilisateur ou le renvoyer en tant que chaîne pour un traitement ultérieur. La
- La bibliothèque d'extracteur AUDERO WAV contient des méthodes telles que
downloadChunk()
,saveChunk()
etgetChunk()
pour gérer le processus d'extraction. Chaque méthode nécessite d'extraire les paramètres de début et de fin du fragment. - La durée du fichier WAV peut être calculée à l'aide de la formule suivante: <code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>. Ces informations, ainsi que d'autres données importantes, peuvent être récupérées à partir des blocs "Data" et "FMT" du fichier WAV.
Présentation du format WAV
Le format de fichier audio WAVE, également connu sous le nom de WAVE ou WAV, est la norme de format de fichier utilisé par Microsoft pour stocker les données audio numériques. Un fichier WAV se compose d'un ensemble de différents types de blocs qui représentent différentes parties du fichier audio. Vous pouvez considérer ce format comme une page HTML: le premier bloc est comme la partie <section></section>
de la page Web, donc vous pouvez trouver plusieurs informations sur le fichier lui-même, tandis que le bloc contenant les données audio elle-même est Situé à la partie . Dans ce cas, "Block" fait référence à la partie des données contenues dans le fichier. Le bloc de format le plus important est "Riff", qui contient le nombre d'octets du fichier; "FMT", qui contient des informations importantes telles que le taux d'échantillonnage et le numéro de canal; Chaque bloc doit avoir au moins deux champs: ID et taille. De plus, chaque WAV valide doit avoir au moins deux blocs: FMT et données. Le premier est généralement au début du fichier, mais après Riff. Chaque bloc a son propre format et champ, et un champ forme une sous-partie du bloc. Le format WAV n'a pas été entièrement spécifié dans le passé, ce qui fait que le fichier a des en-têtes qui ne suivent pas strictement les règles. Ainsi, lorsque vous travaillez sur l'audio, vous pouvez constater qu'un fichier a un ou plusieurs champs, et même les champs les plus importants sont définis sur zéro ou de mauvaises valeurs. Pour vous donner une idée de ce qui se trouve à l'intérieur d'un bloc, le premier bloc de chaque fichier WAV est Riff. Les 4 premiers octets contiennent la chaîne "Riff", et les 4 octets suivants contiennent la taille du fichier moins les 8 octets utilisés par ces deux parties de données. Les 4 derniers octets du bloc Riff contiennent la chaîne "Wave". Vous pouvez deviner quel est le but de ces données. Dans ce cas, vous pouvez les utiliser pour identifier si le fichier que vous analysez est en fait un fichier WAV, comme je l'ai fait dans la méthode <section></section>
de la classe WAV de la bibliothèque. Une autre chose intéressante à expliquer est de calculer la durée d'un fichier WAV. Toutes les informations dont vous avez besoin peuvent être récupérées à partir des deux blocs nécessaires mentionnés précédemment, à savoir: la taille du bloc de données, le taux d'échantillonnage, le nombre de canaux et le nombre de bits par échantillon. La formule pour calculer le temps du fichier (en secondes) est la suivante: setFilePath()
<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
<code>dataChunkSize = 4498170 sampleRate = 22050 channelsNumber = 16 bitsPerSample = 1</code>
<code>time = 4498170 / (22050 * 1 * 16 / 8)</code>
- https://www.php.cn/link/21c1da87c1afdd4ed2836bdb521bea78
- https://www.php.cn/link/3493d96f8fcb16313a77ecfd294734c9
Qu'est-ce que l'extracteur AUDERO WAV
Extracteur WAV AudeRo est une bibliothèque PHP qui vous permet d'extraire des fragments à partir de fichiers WAV. Vous pouvez enregistrer le fragment extrait sur votre disque dur local, le télécharger via le navigateur de l'utilisateur ou le renvoyer en tant que chaîne pour un traitement ultérieur. La seule exigence spéciale pour cette bibliothèque est PHP 5.3 ou version ultérieure car elle utilise un espace de noms. Toutes les classes de la bibliothèque sont dans le répertoire Wavextractor, mais vous remarquerez qu'il y a un répertoire de chargeur supplémentaire où vous pouvez trouver l'autoloader de la bibliothèque. Le point d'entrée du développeur est la classe AuderowAVExtractor, qui a trois méthodes principales dans le projet:
-
downloadChunk()
: Téléchargez le clip -
saveChunk()
: Enregistrez-le sur le disque dur -
getChunk()
: Recherchez le fragment comme une chaîne
Les deux premiers paramètres de toutes ces méthodes sont les mêmes: $start
et $end
, qui représentent les temps de début et de fin (en millisecondes) de la partie à extraire, respectivement. De plus, downloadChunk()
et saveChunk()
acceptent un troisième paramètre facultatif pour définir le nom du fragment extrait. Si aucun nom n'est fourni, la méthode génère un nom lui-même au format "InputFileName-Start-end.wav". Dans le répertoire Wavextractor, il existe deux sous-dossiers: l'utilitaire, qui contient la classe de convertisseur avec certaines méthodes d'utilité; Ce dernier contient les classes WAV, Chunk et Chunkfield. Le premier, comme vous pouvez vous y attendre, représente un fichier WAV, qui se compose d'un ou plusieurs blocs (type de morceau). Cette classe vous permet de récupérer des en-têtes WAV, des durées audio et d'autres informations utiles. Sa méthode la plus importante est getWavChunk()
, qui récupère la partie audio spécifiée en lisant les octets dans le fichier. La classe Chunk représente un bloc d'un fichier WAV étendu par une classe dédiée contenue dans le dossier Chunk. Ce dernier ne prend pas en charge tous les types de blocs existants, seulement les types de blocs les plus importants. La partie non identifiée est gérée par la classe générale et est simplement ignorée tout au long du processus. La dernière classe décrite est Chunkfield. Comme je l'ai souligné, chaque bloc a son propre type et champ, et chaque champ a une longueur (en octets) et un format différent. Il s'agit d'un message très important car vous devez passer les paramètres corrects pour analyser correctement les octets en utilisant les fonctions de PHP pack()
et unpack()
, sinon vous recevrez une erreur. Pour aider à gérer les données, j'ai décidé de les emballer dans une classe qui contient le format, la taille et les valeurs de chaque champ.
Comment utiliser l'extracteur WAV AudeRo
Vous pouvez obtenir le "Extracteur AUDERO WAV" via Composer, ajouter les lignes suivantes à votre fichier composer.json
et exécuter sa commande d'installation:
<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Composer téléchargera et placera la bibliothèque dans le répertoire vendor/audero
du projet. Alternativement, vous pouvez télécharger la bibliothèque directement à partir de son référentiel. Pour extraire le fragment et forcer le téléchargement du navigateur de l'utilisateur, vous écrirez un code similaire à ce qui suit:
<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Dans la première ligne, j'ai inclus le compositeur Autoloader, puis j'ai défini la valeur que je vais utiliser. Comme vous pouvez le voir, je fournis le fichier source, le chemin de sortie comprenant le nom du fichier et la plage de temps que je souhaite extraire. Ensuite, j'ai créé une instance d'AuderowAvExtractor, j'ai pris le fichier source en tant que paramètre et appelé la méthode downloadChunk()
. Notez que parce que le chemin de sortie est passé par référence, vous devez toujours le définir en tant que variable. Regardons un autre exemple. Je vais vous montrer comment sélectionner une plage de temps et enregistrer le fichier sur votre disque dur local. De plus, j'utiliserai l'autoloader inclus dans le projet.
<code>dataChunkSize = 4498170 sampleRate = 22050 channelsNumber = 16 bitsPerSample = 1</code>
En dehors de la configuration du chargeur, cet extrait de code est très similaire à l'extrait de code précédent. En fait, je n'ai apporté que deux modifications: la première est la méthode appelée, saveChunk()
au lieu de downloadChunk()
, et la seconde est que je n'ai pas définie le nom du fichier de sortie (il utilisera le format par défaut expliqué précédemment).
Conclusion
Dans cet article, je vous montre "Extracteur WAV auderon" et comment extraire facilement un ou plusieurs fragments d'un fichier WAV donné. J'ai écrit la bibliothèque pour un projet de travail qui nécessite un ensemble de tuiles très étroit, donc si l'onde ou son en-tête est gravement corrompu, la bibliothèque peut échouer, mais j'ai écrit le code pour essayer si possible de récupérer de l'erreur. N'hésitez pas à utiliser les démos et les fichiers contenus dans le référentiel, car je l'ai publié sous la licence CC BY-NC 3.0.
(Ce qui suit est une œuvre pseudo-originale dans la partie FAQ d'origine, qui maintient la signification d'origine et ajuste la langue)
FAQS (FAQ) sur l'extraction des fragments de fichiers wav
Comment extraire des parties spécifiques d'un fichier WAV?
Pour extraire des parties spécifiques d'un fichier WAV, vous devez utiliser un logiciel d'édition audio comme Audacity. Ouvrez le fichier WAV dans Audacity, utilisez l'outil de sélection pour sélectionner la section que vous souhaitez extraire, puis sélectionnez la sélection des exportations dans le menu Fichier. Vous pouvez ensuite enregistrer la partie sélectionnée en tant que nouveau fichier WAV.
Puis-je extraire des données des fichiers WAV dans un langage de programmation?
Oui, vous pouvez extraire des données à partir de fichiers WAV à l'aide d'un langage de programmation comme Python. Des bibliothèques telles que scipy.io.wavfile
et wave
peuvent être utilisées pour lire les fichiers WAV et extraire des données. Vous pouvez ensuite utiliser ces données en fonction de vos besoins.
Comment extraire des informations secrètes à partir de fichiers audio?
L'extraction des informations secrètes d'un fichier audio implique un processus appelé Steganography. Ce processus consiste à cacher des informations dans un texte ou des données non secret. Il existe différents logiciels et outils qui peuvent vous aider à extraire des messages cachés à partir de fichiers audio.
Puis-je extraire une voix ou une voix d'un fichier WAV?
Extraire un son d'un fichier WAV est une tâche complexe qui implique la séparation des sources audio ou la séparation de la parole. Cela peut être réalisé en utilisant des techniques de traitement des signaux avancées et des algorithmes d'apprentissage automatique. Des logiciels comme Audacity peuvent aider dans une certaine mesure, mais pour des tâches plus complexes, vous devrez peut-être utiliser des outils ou des services plus avancés.
Quelle fonction dans R extrait les valeurs DB d'un fichier wav?
Dans R, vous pouvez utiliser le package tuner pour lire les fichiers WAV et extraire les données. La fonction readWave()
peut être utilisée pour lire un fichier WAV, et l'objet généré peut être utilisé pour accéder aux valeurs DB. Cependant, vous devrez peut-être convertir la valeur d'amplitude en DB en utilisant la formule mathématique appropriée.
Comment extraire les informations de fréquence des fichiers WAV?
L'extraction des informations de fréquence d'un fichier WAV consiste à effectuer une transformée de Fourier sur les données. Cela peut être fait en utilisant la bibliothèque Numpy dans Python ou la bibliothèque FFT dans R. Les résultats de la transformée de Fourier vous donneront les composants de fréquence du signal audio.
Puis-je extraire des métadonnées à partir de fichiers WAV?
Oui, vous pouvez extraire des métadonnées à partir de fichiers WAV. Cela peut inclure des informations telles que le taux d'échantillonnage, la profondeur du bit, le nombre de canaux et la durée. Cela peut être fait à l'aide de bibliothèques de traitement audio dans divers langages de programmation.
Comment extraire plusieurs pièces à partir d'un fichier WAV?
Pour extraire plusieurs pièces à partir d'un fichier WAV, vous pouvez utiliser un logiciel d'édition audio comme Audacity. Vous pouvez sélectionner chaque pièce que vous souhaitez extraire et l'exporter en tant que nouveau fichier. Ce processus peut être répété pour que chaque partie soit extraite.
Puis-je extraire l'audio à partir d'un fichier vidéo et l'enregistrer en tant que fichier WAV?
Oui, vous pouvez extraire l'audio à partir d'un fichier vidéo et l'enregistrer en tant que fichier WAV. Cela peut être fait à l'aide d'un logiciel d'édition vidéo ou d'outils de conversion. Ce processus consiste à ouvrir un fichier vidéo, à extraire une piste audio et à l'enregistrer en tant que fichier WAV.
Comment convertir un fichier WAV en un autre format audio?
Pour convertir un fichier WAV en un autre format audio, vous pouvez utiliser des logiciels ou des outils de conversion audio. Ces outils vous permettent d'ouvrir un fichier WAV et de l'enregistrer dans un autre format, tel que MP3, FLAC ou AAC. Le processus de conversion consiste généralement à sélectionner le format de sortie et à définir la fréquence de masse ou binaire requise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

La fonction d'énumération dans PHP8.1 améliore la clarté et la sécurité du type du code en définissant les constantes nommées. 1) Les énumérations peuvent être des entiers, des chaînes ou des objets, améliorant la lisibilité du code et la sécurité des types. 2) L'énumération est basée sur la classe et prend en charge des fonctionnalités orientées objet telles que la traversée et la réflexion. 3) L'énumération peut être utilisée pour la comparaison et l'attribution pour assurer la sécurité du type. 4) L'énumération prend en charge l'ajout de méthodes pour implémenter une logique complexe. 5) La vérification stricte et la gestion des erreurs peuvent éviter les erreurs courantes. 6) L'énumération réduit la valeur magique et améliore la maintenabilité, mais prêtez attention à l'optimisation des performances.

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Les principes de conception de Restapi incluent la définition des ressources, la conception URI, l'utilisation de la méthode HTTP, l'utilisation du code d'état, le contrôle de version et les haineux. 1. Les ressources doivent être représentées par des noms et maintenues dans une hiérarchie. 2. Les méthodes HTTP devraient être conformes à leur sémantique, telles que GET est utilisée pour obtenir des ressources. 3. Le code d'état doit être utilisé correctement, tel que 404 signifie que la ressource n'existe pas. 4. Le contrôle de la version peut être implémenté via URI ou en-tête. 5. Hateoas bottise les opérations du client via des liens en réponse.

En PHP, la gestion des exceptions est réalisée grâce aux mots clés d'essai, de catch, enfin et de lancement. 1) Le bloc d'essai entoure le code qui peut lancer des exceptions; 2) Le bloc de capture gère les exceptions; 3) Enfin, Block garantit que le code est toujours exécuté; 4) Le lancer est utilisé pour lancer manuellement les exceptions. Ces mécanismes aident à améliorer la robustesse et la maintenabilité de votre code.

La fonction principale des classes anonymes en PHP est de créer des objets uniques. 1. Les classes anonymes permettent aux classes sans nom d'être définies directement dans le code, ce qui convient aux exigences temporaires. 2. Ils peuvent hériter des classes ou implémenter des interfaces pour augmenter la flexibilité. 3. Faites attention aux performances et à la lisibilité au code lorsque vous l'utilisez et évitez de définir à plusieurs reprises les mêmes classes anonymes.
