Pregunta

Estoy construyendo una aplicación que permita a los usuarios autenticados usar un navegador web para cargar archivos de audio MP3 (de discursos) a un servidor, para distribuir el audio en una red. Los archivos de audio deben usar una velocidad de bits específica (32 kbps o menos) para garantizar un uso eficiente del ancho de banda, y una tasa de muestreo aprobada (22.050 o 44.100) para maximizar la compatibilidad. En lugar de validar estos requisitos siguiendo la carga utilizando un script del lado del servidor, esperaba poder utilizar HTML5 FileReReder para determinar esta información antes de la carga. Si el navegador detecta una tasa de bits válida y / o una tasa de muestreo, el usuario se puede aconsejar de esto, y el intento de carga se puede bloquear, hasta que se realicen las revisiones necesarias en el archivo de audio.

¿Es esto posible usando HTML5? Tenga en cuenta que la pregunta es con respecto a HTML5, no sobre el enfoque de mi solicitud. ¿Puede HTML5 detectar la velocidad de muestreo y / o la velocidad de bits de un archivo de audio MP3?

FYI NOTA: Estoy usando un applet Java FTP para realizar la carga. El applet se configura para reenviar automáticamente al usuario a una URL de mi elección después de una carga exitosa. Esto pone el levantamiento pesado en el cliente, en lugar de en el servidor. También es necesario porque el destino final de cada archivo cargado es diferente; Pueden estar en diferentes servidores y diferentes dominios, posiblemente apoyando diferentes idiomas de scripting en el servidor. Cualquier servidor excedería rápidamente su espacio de almacenamiento de otra manera, o si el script del lado del servidor hizo una transferencia FTP, el rendimiento del servidor se degradaba rápidamente como un solo punto de falla. Por lo tanto, para mi solicitud, que almacena los archivos de audio cargados en múltiples servidores y múltiples dominios, la validación de la velocidad de bits y la tasa de muestreo deben tener lugar en el lado del cliente.

¿Fue útil?

Solución

Puede usar FileReader API y JavaScript fabricó códecs de audio para extraer esta información de los archivos de audio.

Una biblioteca que proporciona código base para los códecs Pure JS es Aurora.js, luego se construye el código de códec real en él

https://github.com/audiocogs/aurora.js/wiki/ Usos conocidos

Naturalmente, el navegador debe apoyar la API de FileReader.

No entendí de su caso de uso por qué necesita un applet Java o FTP.Las cargas HTTP funcionan bien para múltiples archivos grandes si se realizan correctamente usando Async Badckend (como Nodo.js, Python Twisted) y almacenamiento escalable (Amazon S3).El caso de uso similar es cambiar el tamaño de las imágenes entrantes que es una aplicación mucho más exigente que extraer metadatos de audio fuera del archivo.El único beneficio en el lado del cliente es reducir el número de cargas innecesarias de los usuarios no conocidos técnicamente.

Otros consejos

Dado que cualquier usuario puede cambiar su script / markup para evitar esto o incluso volver a propósito, ni siquiera lo consideraría.

Si alguien puede cambiar su script de validación con un poco de conocimiento de HTML / Javascript, no use HTML / Javascript. Es más fácil asegurarse de que esté validado, y validado correctamente validándolo en el servidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top