Domanda

Sto costruendo un'applicazione che consente agli utenti autenticati di utilizzare un browser Web per caricare file audio MP3 (dei discorsi) su un server, per distribuire l'audio su una rete. I file audio devono utilizzare un bit rate specifico (32 kbps o meno) per garantire un uso efficiente della larghezza di banda e una velocità di campionamento approvata (22.050 o 44.100) per massimizzare la compatibilità. Piuttosto che convalidare questi requisiti seguendo il caricamento utilizzando uno script lato server, speravo di utilizzare HTML5 FileReader per determinare queste informazioni prima del caricamento. Se il browser rileva un bit rate e / o la velocità di campionamento non validi, l'utente può essere informato di questo, e il tentativo di caricamento può essere bloccato, fino a quando le revisioni necessarie sono apportate al file audio.

È possibile utilizzare HTML5? Si prega di notare che la domanda riguarda HTML5, non sull'approccio della mia applicazione. L'HTML5 può rilevare la velocità di campionamento e / o la velocità di bit di un file audio MP3?

FYI Nota: sto usando un applet Java FTP per eseguire il caricamento. L'applet è impostato per inoltrare automaticamente l'utente a un URL della mia scelta seguendo un caricamento riuscito. Questo mette il sollevamento pesante sul client, piuttosto che sul server. È anche necessario perché la destinazione finale di ciascun file caricato è diverso; Possono essere su server diversi e domini diversi, possibilmente supportando diversi linguaggi di scripting sul server. Qualsiasi server supererebbe rapidamente il suo spazio di archiviazione altrimenti, o se lo script del server server ha fatto un trasferimento FTP, le prestazioni del server si riducono rapidamente come un singolo punto di errore. Quindi per la mia applicazione, che memorizza i file audio caricato su più server e più domini, la convalida del bit rate e il tasso di campionamento deve avvenire sul lato client.

È stato utile?

Soluzione

È possibile utilizzare FileReader API e Codec Audio JavaScript costruito per estrarre queste informazioni dai file audio.

Una libreria che fornisce il codice di base per Pure JS Codecs è Aurora.js - quindi il codice codec effettivo è stato costruito su di esso

https://github.com/audiocogs/aurora.js/wiki/ Usi noti

Naturalmente il browser deve supportare API FileReader.

Non ho capito dal tuo caso d'uso Perché hai bisogno di Applet Java o FTP.I caricamenti HTTP funzionano bene per più file Big se eseguiti correttamente utilizzando Async Badckend (come Node.js, Python Twisted) e stoccaggio scalabile (Amazon S3).Un'aspetto simile è ridimensionamento delle immagini in entrata che è un'applicazione molto più impegnativa rispetto all'estrazione dei metadati audio dal file.L'unico vantaggio sul lato client è ridurre il numero di caricamenti non necessari da parte di utenti non così tecnicamente consapevoli.

Altri suggerimenti

Dato che qualsiasi utente può cambiare il tuo script / markup per bypassare questo o addirittura lo scopo, non lo considererei nemmeno.

Se qualcuno può cambiare lo script di convalida con un bit di conoscenza di HTML / JavaScript, non utilizzare HTML / JavaScript. È più facile assicurarsi che sia convalidato e convalidato correttamente convalidandolo sul server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top