


Comment diviser un flux blob enregistré en plusieurs fichiers WAV de 5 secondes à l'aide de JavaScript et s'assurer qu'il joue normalement?
Apr 04, 2025 pm 02:39 PMUtilisez JavaScript pour diviser le flux blob enregistré et générer un fichier WAV de 5 secondes
Lors de l'enregistrement à l'aide de React-MIC, j'ai rencontré une exigence: j'ai besoin de diviser le flux BLOB enregistré en plusieurs fichiers WAV de 5 secondes. Cependant, après avoir essayé, j'ai constaté que seul le premier fichier WAV divisé peut être lu normalement et que le reste des fichiers est invité à être corrompu.
Lors de la mise en ?uvre de cette exigence dans le frontal, nous sommes principalement confrontés à deux défis: l'un est de savoir comment segmenter correctement le flux blob, et l'autre est de savoir comment s'assurer que chaque clip segmenté peut générer et lire correctement les fichiers WAV. Voici des exemples de code et des solutions:
Importer React, {useref, useState} de 'react' import {reactmic, reactMicStoPevent} à partir de 'react-mic' import {bouton} de 'antd' const AudioreCrorder = () => { const [enregistrement, setRecord] = UseState (false) const resref = useref <blob> ([]) const AudiochunksRef = useref <blob> ([]) const interalref = useref <nodejs.timer null> (null) const premierblob = useref <blob non d> (indéfini) const CreateWavheader = (numChannels, samplerate, bytelngth) => { constant const = new ArrayBuffer (44); const View = new DataView (en-tête); View.SetUint32 (0, 1380533830, false); // "riff" View.SetUint32 (4, bytelngth 36, false); View.SetUint32 (8, 1718449184, false); // "VAGUE" View.SetUint32 (12, 1684108385, false); // "FMT" View.SetUint32 (16, 16, true); // 16 pour PCM View.SetUint16 (20, 1, true); // pcm View.SetUint16 (22, numChannels, true); View.SetUint32 (24, Samplerate, true); View.SetUint32 (28, samplerate * numChannels * 2, true); View.SetUint16 (32, numChannels * 2, true); View.SetUint16 (34, 16, true); // 16 bits View.SetUint32 (36, 1684108385, false); // "données" View.SetUint32 (40, bytelngth, true); En-tête de retour; }; const SaveFile = async () => { const chunkslist = resref.current; pour (que i = 0; i <chunkslist.length i const audiobuffer="new" uint8array chunkslist .arraybuffer header="CreateWavheader" audiobuffer.length supposons mono et wavblob="new" blob wav url="url.createObjectUrl" a="document.CreateElement" a.href="url;" a.download="`Enregistrement" .wav a.click url.revokeobjecturl startrecording="()"> { setRecord (true) AudioChunksRef.Current = [] // Effacer les données d'enregistrement précédentes // Diviser l'intervalle d'enregistrement. const CurBlob = new Blob (AudiochunksRef.current, {type: 'audio / wav'}) const startIndex = AudiochunksRef.current.indexof (FirstBlob.current comme blob) const blob = curblob.slice (startIndex === -1? 0: startIndex, -1, 'audio / wav') FirstBlob.Current = AudiochunksRef.current.at (-1) // traite la console de données d'enregistrement actuelle.log ('segment des données d'enregistrement actuelles:', blob) resref.current.push (blob) }, 5000) } const stopRecording = () => { setRecord (false) interalref.current && clearInterval (interalref.current) // timiner claire} const Odata = (enregistréblob: blob) => { AudiochunksRef.current.push (enregistréblob) // Enregistrer les données d'enregistrement} const Onstop = (enregistréblob: reactMicStOnevent) => { Console.log ('enregistré terminé:', RecordedBlob) } const SaveFile1 = () => { const chunkslist = resref.current chunkslist.map (async (v, i) => { const filename = 'aaa.wav' const File: file = nouveau fichier ([v], nom de fichier, {type: 'audio / wav'}) const FileSize = file.size Console.log ('Files Size', FileSize) // Créer un lien de téléchargement const url = url.createObjectUrl (fichier) const a = document.createelement ('a') a.href = URL A.Download = `Enregistrement $ {i} .wav` // Définissez le nom du fichier de téléchargement a.click () // Trigger Download // Release URL Resource url.RevokeObjectUrl (URL) }) } const SaveFinalResult = () => { const filename = 'aaa.wav' const File: file = nouveau fichier (AudiochunksRef.current, nom de fichier, {type: 'audio / wav'}) const FileSize = file.size Console.log ('Files Size', FileSize) // Créer un lien de téléchargement const url = url.createObjectUrl (fichier) const a = document.createelement ('a') a.href = URL A.Download = `Enregistrement $ {date.now ()}. wav` // Définissez le nom du fichier de téléchargement a.click () // Trigger Download // Release URL Resource url.RevokeObjectUrl (URL) } Retour ( <div> <reactmic enregistre="{disques}" onstop="{onstop}" ondata="{ondata}" mimetype="Audio / wav"></reactmic> <button onclick="{starTrecording}"> Démarrer l'enregistrement <button onclick="{stopRecording}"> Arrêtez d'enregistrer <button onclick="{SaveFile}"> Télécharger <button onclick="{SavefinalResult}"> Télécharger Final </button></button></button></button> </div> ) } exportation par défaut audioritor</chunkslist.length></blob></nodejs.timer></blob></blob>
Pendant le processus d'essai de diviser le flux Blob et de générer le fichier WAV, il a été constaté que l'ajout manuellement les informations de l'en-tête WAV ne résoudrait pas le problème. La raison en est que la structure du fichier WAV est relativement stricte. Si les informations d'en-tête ne sont pas correctement ajoutées après la segmentation, le fichier peut être corrompu.
Une suggestion pour résoudre ce problème consiste à utiliser la version WASM de FFMPEG, une bibliothèque de traitement audio et vidéo qui peut être exécutée dans le navigateur. Avec lui, vous pouvez facilement segmenter l'audio et générer le format de fichier WAV correct. Vous pouvez envisager d'utiliser le projet FFMPEG.WASM pour implémenter cette fonction.
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

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à 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

Les investisseurs ordinaires peuvent découvrir des jetons potentiels en suivant "Smart Money", qui sont des adresses à but lucratif, et faire attention à leurs tendances peut fournir des indicateurs de premier plan. 1. Utilisez des outils tels que Nansen et Arkham Intelligence pour analyser les données sur la cha?ne pour voir les achats et les avoirs de l'argent intelligent; 2. Utilisez des analyses Dune pour obtenir des tableaux de bord créés par la communauté pour surveiller le flux de fonds; 3. Suivez des plateformes telles que Lookonchain pour obtenir des renseignements en temps réel. Récemment, Congming Money prévoit de re-polissons la piste LRT, le projet Depin, l'écosystème modulaire et le protocole RWA. Par exemple, un certain protocole de LRT a obtenu une grande quantité de dép?ts précoces, un certain projet de dépin a été accumulé en continu, une certaine cha?ne publique de jeu a été soutenue par le trésor de l'industrie et un certain protocole RWA a attiré les institutions.

DAI convient aux utilisateurs qui attachent l'importance du concept de décentralisation, participent activement à l'écosystème Defi, ont besoin de liquidités de réduction des actifs et poursuivre la transparence et l'autonomie des actifs. 1. Les partisans du concept de décentralisation font confiance aux contrats intelligents et à la gouvernance communautaire; 2. Les utilisateurs Defi peuvent être utilisés pour l'extraction de prêts, de promesses et de liquidités; 3. Les utilisateurs transversaux peuvent réaliser un transfert flexible des actifs multi-cha?nes; 4. Les participants à la gouvernance peuvent influencer les décisions du système par le vote. Ses principaux scénarios comprennent les prêts décentralisés, la couverture des actifs, l'exploitation des liquidités, les paiements transfrontaliers et la gouvernance communautaire. Dans le même temps, il est nécessaire de prêter attention aux risques système, aux fluctuations hypothécaires et aux problèmes de seuil technique.

Pour identifier les fausses altcoins, vous devez commencer à partir de six aspects. 1. Vérifiez et vérifiez les antécédents des matériaux et du projet, y compris les livres blancs, les sites Web officiels, les adresses open source du code et la transparence de l'équipe; 2. Observer la plate-forme en ligne et donner la priorité aux échanges traditionnels; 3. Méfiez-vous des rendements élevés et des modes d'échauffement des personnes pour éviter les pièges de fonds; 4. Analyser le code du contrat et le mécanisme de jeton pour vérifier s'il existe des fonctions malveillantes; 5. Examiner les opérations de la communauté et des médias pour identifier la fausse popularité; 6. Suivez les suggestions pratiques anti-fraude, comme ne pas croire aux recommandations ou en utilisant des portefeuilles professionnels. Les étapes ci-dessus peuvent effectivement éviter les escroqueries et protéger la sécurité des actifs.

La montée coordonnée de Bitcoin, Chainlink et RWA marque le changement vers la domination narrative institutionnelle sur le marché de la cryptographie. Le bitcoin, en tant qu'actif de couverture macro alloué par les institutions, fournit une base stable pour le marché; ChainLink est devenu un pont clé reliant la réalité et le monde numérique grace à la technologie Oracle et Cross-Chain; RWA fournit un chemin de conformité pour l'entrée en capital traditionnelle. Les trois ont construit conjointement une boucle fermée logique complète de l'entrée institutionnelle: 1) allouer BTC pour stabiliser le bilan; 2) développer la gestion des actifs sur la cha?ne via RWA; 3) s'appuyer sur la cha?ne pour construire des infrastructures sous-jacentes, ce qui indique que le marché est entré dans une nouvelle étape tirée par la demande réelle.

DAI convient-il à la détention à long terme? La réponse dépend des besoins individuels et des préférences de risque. 1. Dai est un stablecoin décentralisé, généré par une garantie excessive pour les actifs cryptographiques, adaptés aux utilisateurs qui poursuivent la résistance et la transparence de la censure; 2. Sa stabilité est légèrement inférieure à l'USDC et peut ressentir un léger doyenne en raison de fluctuations collatérales; 3. Applicable aux scénarios de prêt, d'engagement et de gouvernance dans l'écosystème Defi; 4. Faites attention aux risques de mise à niveau et de gouvernance du système Makerdao. Si vous poursuivez des garanties de stabilité et de conformité élevées, il est recommandé de choisir USDC; Si vous attachez l'importance au concept de décentralisation et que vous participez activement aux applications Defi, DAI a une valeur à long terme. La combinaison des deux peut également améliorer la sécurité et la flexibilité de l'allocation des actifs.

Le r?le du contrat intelligent Ethereum est de réaliser une exécution de protocole décentralisée, automatisée et transparente. Ses fonctions principales incluent: 1. En tant que couche logique principale de DAPP, il prend en charge l'émission de jetons, Defi, NFT et d'autres fonctions; 2. Exécuter automatiquement les contrats via le code pour réduire les risques d'intervention et de fraude humaines; 3. Construisez un écosystème Defi afin que les utilisateurs puissent effectuer directement des opérations financières telles que les prêts et les transactions; 4. Créer et gérer les actifs numériques pour assurer le caractère unique et la vérifiabilité; 5. Améliorer la transparence et la sécurité de la cha?ne d'approvisionnement et de la vérification de l'identité; 6. Soutenir la gouvernance DAO et réaliser la prise de décision décentralisée.

La valeur des étages est généralement fixée au dollar américain 1: 1, mais elle fluctuera légèrement en raison de facteurs tels que l'offre et la demande du marché, la confiance des investisseurs et les actifs de réserve. Par exemple, l'USDT est tombé à 0,87 $ en 2018, et l'USDC est tombé à environ 0,87 $ en 2023 en raison de la crise bancaire de la Silicon Valley. Le mécanisme d'ancrage des stablescoins comprend principalement: 1. Type de réserve de devises Fiat (comme USDT, USDC), qui repose sur les réserves de l'émetteur; 2. 3. Stablecoins algorithmiques (tels que UST), qui repose sur des algorithmes pour ajuster l'alimentation, mais présente des risques plus élevés. Les recommandations de plates-formes commerciales communes comprennent: 1. Binance, fournissant de riches produits de trading et une forte liquidité; 2. Okx,

Quels altcoins ont un potentiel explosif en 2025? Les réponses sont les suivantes: 1. Dans la piste d'expansion de la couche 2. Parmi le protocole Defi altcoins, Aave (Aave) a une logique de prêt améliorée, attiré des entrées de capital stables en raison de la nouvelle version, et Curve (CRV) maintient une position avantageuse dans la piste d'échange de stablecoin et a une forte compétitivité; 3. Dans la combinaison de projets d'intelligence artificielle, Fetch.ai (FET) augmente l'attention en intégrant l'IA et la blockchain, et Ocean Pro
