также смотри тут — https://1.cbm.ua/?p=6210
тут можно скачать — https://github.com/danvk/RangeHTTPServer/
pip install rangehttpserver
py -m RangeHTTPServer
python -m http.server 8000
http://localhost:8000/index.html
Проблема в том что этот простой Web Server на базе Python не может в JS корректно выполнить команду, потому что не поддерживает «Range Requests (запросов диапазона)».
currentAudio.currentTime = 1.0;
Стандартный python3 -m http.server (или SimpleHTTPServer в Python 2) не поддерживает Range Requests из коробки. Он всегда отдает весь файл целиком. Когда браузер пытается «перепрыгнуть» в середину файла, он отправляет запрос с Range заголовком, но сервер http.server игнорирует его и отправляет весь файл. Это может приводить к сбросу currentTime на 0 или просто к некорректному поведению.
Решение: Используйте веб-сервер, который поддерживает Range Requests
Использование rangehttpserver: Есть готовая библиотека rangehttpserver, которая расширяет SimpleHTTPServer для поддержки Range запросов.
- Установите:
pip install rangehttpserver - Запустите из каталога с аудиофайлами:
python -m rangehttpserverЭто более простой способ, если вы не хотите писать свой обработчик.
py -m pip install -U pip py -m pip install rangehttpserver
и теперь можно запускать сервер.
Внимание! Сервер нужно запускать из папки проекта (т.е. из папки где находиться файлы JS).
py -m RangeHTTPServer
py -m RangeHTTPServer
Network: Убедитесь, что ваш аудиофайл загружается. Если вы видите статус 206 Partial Content для аудиофайла после попытки установки currentTime, это значит, что Range Requests работают. Если вы видите 200 OK каждый раз, то сервер отправляет весь файл.
Ограничения браузера: Некоторые браузеры могут иметь свои нюансы в реализации медиа-API. Убедитесь, что вы тестируете на нескольких браузерах, если это критично.
Кэширование: Иногда проблемы могут быть связаны с кэшированием браузера. Попробуйте очистить кэш или использовать режим инкогнито/приватного просмотра.
Другие легкие веб-серверы:
nginx: Очень мощный и легкий веб-сервер, который поддерживает Range Requests из коробки. Для тестирования на ноутбуке его можно быстро настроить.Apache HTTP Server: Также поддерживает Range Requests, но более громоздкий для простой задачи.
XAMPP / MAMP / WAMP (для более комплексного локального стека): Если вам помимо простого сервера файлов нужна полноценная среда с Apache, MySQL и PHP (или другими языками), то XAMPP (кроссплатформенный), MAMP (для macOS) или WAMP (для Windows) будут хорошим выбором. Они устанавливают весь стек локально, и вы можете размещать свои файлы в каталоге htdocs (или аналогичном) для доступа через localhost.
Преимущества:
- Предоставляет полноценную среду для веб-разработки (сервер, база данных, язык программирования).
- Удобен для тестирования более сложных веб-приложений, работающих с аудио.
Недостатки:
- Более тяжелые и ресурсоемкие, чем просто файловые серверы.
- Требуют больше настройки, если вам нужен только веб-сервер.
LMS (Lightweight Music Server) или Navidrome (специализированные для музыки): Если ваша основная задача — тестирование потоковой передачи аудио и организация музыкальной библиотеки, вы можете рассмотреть специализированные решения, такие как LMS или Navidrome. Они предлагают веб-интерфейс, поддержку тегов, транскодирование и многое другое. Однако они, как правило, более сложны в установке и настройке, чем простые HTTP-серверы.
