Question

Je construis une application qui permet aux utilisateurs authentifiés d'utiliser un navigateur Web pour télécharger des fichiers audio MP3 (de discours) à un serveur, pour la distribution de l'audio sur un réseau. Les fichiers audio doivent utiliser un taux de bits spécifique (32 kbps ou moins) pour assurer une utilisation efficace de la bande passante et une fréquence d'échantillonnage approuvée (22.050 ou 44,100) pour maximiser la compatibilité. Plutôt que de valider ces exigences après le téléchargement à l'aide d'un script de serveur, j'espérais utiliser HTML5 FileReader pour déterminer ces informations avant le téléchargement. Si le navigateur détecte un débit binaire non valide et / ou un taux d'échantillonnage non valide, l'utilisateur peut en être informé et la tentative de téléchargement peut être bloquée jusqu'à ce que les révisions nécessaires soient apportées au fichier audio.

est-ce possible avec HTML5? Veuillez noter que la question concerne HTML5, pas sur l'approche de mon application. Le HTML5 peut-il détecter la fréquence d'échantillonnage et / ou le débit bit d'un fichier audio MP3?

FYI Remarque: j'utilise un applet FTP Java pour effectuer le téléchargement. L'applet est configuré pour transférer automatiquement l'utilisateur à une URL de mon choix après un téléchargement réussi. Cela met la levée lourde sur le client plutôt que sur le serveur. Il est également nécessaire car la destination finale de chaque fichier téléchargé est différente; Ils peuvent être sur différents serveurs et différents domaines, éventuellement supportant différentes langues de script sur le serveur. Tout autre serveur dépasserait rapidement son espace de stockage autrement, ou si le script côté serveur a effectué un transfert FTP, la performance du serveur se dégraderait rapidement comme un seul point d'échec. Donc, pour mon application, que les magasins téléchargés des fichiers audio téléchargés sur plusieurs serveurs et plusieurs domaines, la validation du débit binaire et du taux d'échantillonnage doit avoir lieu du côté du client.

Était-ce utile?

La solution

Vous pouvez utiliser des codecs audio de FileReader API et JavaScript pour extraire ces informations à partir des fichiers audio.

Une bibliothèque fournissant un code de base pour pure JS codecs est Aurora.js - Le code du codec est alors construit sur celui-ci

https://github.com/audiocogs/aurora.js/wiki/ Utilisations connues

Naturellement, le navigateur doit prendre en charge l'API de FileReader.

Je n'ai pas compris de votre cas d'utilisation Pourquoi vous avez besoin de Java Applet ou FTP.Les téléchargements HTTP fonctionnent bien pour plusieurs gros fichiers si cela est fait correctement à l'aide d'ASYNC Badckend (comme Node.Js, Python Twisted) et Stockage évolutif (Amazon S3).Un étui d'utilisation similaire résoue des images entrantes qui constituent une application beaucoup plus exigeante que d'extraire des métadonnées audio à partir du fichier.Le seul bénéfice du côté client est de réduire le nombre de téléchargements inutiles par des utilisateurs non compatibles avec des techniques.

Autres conseils

étant donné que tout utilisateur peut modifier votre script / marquage pour contourner cela ou même le refuge, je ne le considérerais même pas.

Si quelqu'un peut changer votre script de validation avec un peu de connaissance de HTML / JavaScript, n'utilisez pas HTML / JavaScript. Il est plus facile de s'assurer qu'il est validé et validé correctement en la validant sur le serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top