Извлечение аудио-бита и информации об выборе выборок в JS перед загрузкой

StackOverflow https://stackoverflow.com//questions/12700701

Вопрос

Я создаю приложение, которое позволяет аутентифицированным пользователям использовать веб-браузер для загрузки аудиофайлов MP3 (выступлений) на сервер для распределения звука в сети. Аудиофайлы должны использовать определенную скорость передачи битов (32 кбит / с или менее) для обеспечения эффективного использования полосы пропускания, а также одобренной скорости дискретизации (22.050 или 44.100) для максимизации совместимости. Вместо того, чтобы подтвердить эти требования после загрузки с помощью скрипта на стороне сервера, я надеялся использовать HTML5 Fileereader, чтобы определить эту информацию до загрузки. Если браузер обнаружит недействительную скорость бита и / или частоту дискретизации, пользователю можно посоветовать об этом, и попытка загрузки может быть заблокирована, пока не выполняется необходимые изменения в аудиофайл.

Это возможно, используя HTML5? Обратите внимание, что вопрос касается HTML5, а не о подходе моего приложения. Может ли HTML5 определяет скорость дискретизации и / или скорость бита в MP3-аудиофайла?

FYI Примечание. Я использую FTP Java-апплет для выполнения загрузки. Апплет установлен для автоматического перемотания пользователя к URL моего выбора после успешной загрузки. Это ставит тяжелый подъем на клиента, а не на сервере. Также необходимо, потому что конечный пункт назначения каждого загруженного файла отличается; Они могут быть на разных серверах и разных доменах, возможно, поддерживают различные языки сценариев на сервере. Любой один сервер быстро превысит его пространство для хранения, или, если сценарий на стороне сервера сделал передачу FTP, производительность сервера быстро ухудшается как единая точка отказа. Таким образом, для моего приложения, которые хранят загруженные аудиофайлы на нескольких серверах и нескольких доменах, валидация скорости передачи битов и скорости дискретизации должно происходить на стороне клиента.

Это было полезно?

Решение

Вы можете использовать API fialeReader и JavaScript, построенные аудиокодеки для извлечения этой информации из аудиофайлов.

Одна библиотека, обеспечивающая базовый код для чистых кодеков JS - aurora.js - тогда фактический код кодека построен на нем

https://github.com/audioCogs/aurora.js/wiki/ Известен - использует

Естественно, браузер должен поддерживать API fileheader.

Я не понял от вашего случая использования, почему вам нужен Java-апплет или FTP.HTTP-загрузки работают нормально для нескольких больших файлов, если это сделано правильно с использованием Async Badckend (например, Node.js, Python Twisted) и масштабируемое хранение (Amazon S3).Подобное использование корпус изменяет размеры входящих изображений, которые намного более требовательные приложения, чем извлечение аудиотаданных из файла.Единственное преимущество на стороне клиента состоит в том, чтобы уменьшить количество ненужных загрузок не так технически известным пользователям.

Другие советы

Учитывая, что любой пользователь может изменить свой скрипт / разметку, чтобы обойти это или даже повторно назначить, я бы даже не считал это.

Если кто-то может изменить ваш скрипт проверки с небольшим знанием HTML / JavaScript, не используйте HTML / JavaScript. Легче убедиться, что он подтверждается, и правильно подтверждается, подтверждая его на сервере.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top