Как загрузить и проверить файл mp3 по сети, не воспроизводя его? - PullRequest
0 голосов
/ 19 ноября 2018

У нас много проблем с нашим программным обеспечением (которое в основном используется в школах) и брандмауэрами: мы используем mp3-файлы в наших ресурсах, а mp3-файлы блокируются во многих школьных брандмауэрах.Я пытаюсь написать код js, чтобы определить, когда это происходит, чтобы мы могли предупредить пользователя (преподавателей) о том, чтобы поговорить с его отделом ИТ и разблокировать его.

Сначала я пошел по пути, пытаясьсыграть короткую mp3 тишину и определить, произошло ли это.Но вам нужно перепрыгнуть через столько обручей, чтобы автоматически воспроизводить аудио, особенно в iOS Safari - в ожидании взаимодействия с пользователем и т. Д., Чтобы материал, запрыгивающий через обруч, просто мешал тестам и заставлял код думать, что mp3-файлы былибыть заблокированными, когда их фактически не позволяли воспроизвести браузер, а не сеть.

Итак, я отказываюсь от идеи проигрывания mp3.Вместо этого я хочу запросить небольшой mp3-файл по сети, а затем проанализировать содержимое ответа, чтобы убедиться, что это действительно mp3-файл, а не, скажем, HTML-страница с надписью «Извините,контент заблокирован ", или что-то еще, что брандмауэры могут вернуть, когда кто-то просит заблокированный файл.

Я не могу даже подумать, какой самый простой способ сделать это, который будет работать в кросс-браузерном режиме.Я использую jQuery, и я подумал, что смогу что-то сделать в блоке «success» ajax-вызова jQuery, чтобы проанализировать возвращаемые данные и убедиться, что это mp3-файл.

Первое, что я подумал, это просто вытащить данные в div на странице, вот так:

var url = "/assets/test_media_files/silence.mp3?t="+Math.random();
$("#content-test-file-data").load(url, function(){
  console.log("loaded data");
});

Это работает, и у меня груз бинарных данных в#content-test-file-data дел.Но как я могу определить, является ли это mp3-файлом?Есть ли лучший способ сделать это?Нужно ли запрашивать данные типа mime или что-то в этом роде?спасибо

1 Ответ

0 голосов
/ 19 ноября 2018

Вы сами создаете этот mp3? Добавьте тег ID3 в тестовый файл и прочитайте его. Так как он находится в конце файла (128 байт), он будет уверен, что файл полностью получен. ID3 org

Второй подход заключается в чтении / декодировании заголовка кадра (как сделано здесь ), но по сравнению с первым вариантом это намного сложнее.

...