Как транслировать аудио файлы в режиме реального времени

Вы можете разрешить только глагол OPTIONS для анонимных пользователей.


  
    
      
      
  

Согласно спецификациям W3C браузер не включает учетные данные пользователя из предпрограммы CORS: https://dvcs.w3.org/hg/cors/raw-file/tip/Overview.html#preflight -request

-1
задан macleos 17 January 2019 в 15:58
поделиться

2 ответа

Если вы придерживаетесь http, вы можете использовать кодирование передачи по частям и отложить отправку пакетов / кусков. Это действительно будет что-то похожее на hardcoded thread::sleep, но вы можете использовать цикл обработки событий, чтобы определить, когда отправлять следующий блок, вместо того, чтобы останавливать поток.

Вы можете столкнуться с проблемами синхронизации, возможно, ваша логика сна вызывает более длительные задержки, чем время исполнения песни. У YouTube та же логика, о которой вы говорите. Похоже, что они разбивают видео на несколько HTTP-запросов, а клиент внешнего интерфейса запрашивает новый чанк, когда буфер слишком мал. Разделение файла на несколько запросов http тела и последующая сборка их на клиенте могут иметь характеристики, которые вы ищете.

Вы можете просто реализовать http Range заголовок и позволить клиенту запрашивать только определенный Range mp3-файл. https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests

0
ответ дан maxm 17 January 2019 в 15:58
поделиться

Самый простой способ (на сегодняшний день) будет иметь по запросу клиентские фрагменты аудиофайла. std::net::TcpStream (это то, что, как вы сказали, вы используете) не имеет метода регулирования скорости передачи, поэтому у вас нет многих возможностей ограничить потоковую передачу, кроме использования жестко заданных задержек потоков.

Например, ваш клиент может сохранить сегмент аудио, а когда пользователь, прослушивающий аудио, достигает определенной точки до конца сегмента (или пропускает его вперед), клиент отправляет запрос на сервер. получить соответствующий сегмент.

Это похоже на работу реальных потоковых сервисов (таких как Youtube), потому что, как вы сказали, было бы плохой идеей хранить весь файл на стороне клиента.

0
ответ дан ThatOneDeveloper 17 January 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: