Pergunta

Eu estou construindo um aplicativo que permite aos usuários autenticados usar um navegador da Web para fazer upload de arquivos de áudio mp3 (de discursos) para um servidor, para distribuir o áudio em uma rede. Os arquivos de áudio precisam usar uma taxa de bits específica (32Kbps ou menos) para garantir o uso eficiente de largura de banda e uma taxa de amostragem aprovada (22.050 ou 44.100) para maximizar a compatibilidade. Em vez de validar esses requisitos após o upload usando um script do lado do servidor, esperava usar o HTML5 Filereader para determinar essas informações antes do upload. Se o navegador detectar uma taxa de bits e / ou taxa de amostragem inválida, o usuário poderá ser informado disso, e a tentativa de upload pode ser bloqueada, até que as revisões necessárias sejam feitas no arquivo de áudio.

Isso é possível usando HTML5? Por favor, note que a questão é sobre o HTML5, não sobre a abordagem da minha inscrição. O HTML5 pode detectar a taxa de amostragem e / ou taxa de bits de um arquivo de áudio MP3?

FYI Nota: Estou usando um applet Java FTP para executar o upload. O applet é configurado para encaminhar automaticamente o usuário para um URL da minha escolha após um upload bem-sucedido. Isso coloca o levantamento pesado no cliente, em vez do servidor. Também é necessário porque o destino final de cada arquivo carregado é diferente; Eles podem ser em diferentes servidores e diferentes domínios, possivelmente suportando diferentes linguagens de scripts no servidor. Qualquer servidor excederia rapidamente seu espaço de armazenamento, ou se o script do lado do servidor fizer uma transferência FTP, o desempenho do servidor será degradado rapidamente como um único ponto de falha. Então, para o meu aplicativo, que armazena arquivos de áudio carregados em vários servidores e vários domínios, a validação da taxa de bits e a taxa de amostragem deve ocorrer no lado do cliente.

Foi útil?

Solução

Você pode usar o FileReader API e o JavaScript construiu codecs de áudio para extrair essas informações dos arquivos de áudio.

Uma biblioteca que fornece código base para codecs de js puro é aurora.js - então o código de codec real é construído sobre ele

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

Naturalmente, o navegador deve suportar a API do Filereader.

Eu não entendi do seu caso de uso Por que você precisa de applet Java ou FTP.Os uploads HTTP funcionam bem para vários arquivos grandes, se for feito corretamente usando o Async Badckend (como Node.js, Python Twisted) e armazenamento escalável (Amazon S3).O caso de uso semelhante está redimensionando imagens recebidas que é uma aplicação muito mais exigente do que extrair metadados de áudio fora do arquivo.O único benefício no lado do cliente é reduzir o número de uploads desnecessários por usuários não tão tecnicamente conscientes.

Outras dicas

Dado que qualquer usuário pode alterar seu script / marcação para contornar isso ou mesmo re-propósito, eu nem sequer consideraria isso.

Se alguém puder alterar seu script de validação com um pouco de conhecimento de HTML / JAVASCRIPT, não use HTML / Javascript. é mais fácil certificar-se de que é validado e validado corretamente validá-lo no servidor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top