TequilaOne
@TequilaOne

Как изменять битрейт аудио потока в реальном времени?

Возможно ли менять битрейт аудио-потока с помощью своего backend сервера на лету?
Имеется множество интернет радиостанций (Станции не мои, просто взятые с просторов интернета).
Возьмем например url-поток в вещании 320kbps. Возможно ли его отдавать "на лету" через свой сервер в более низком битрейте? Заранее сделать для всех радиостанций альтернативные потоки с разным битрейтом нет возможности, поток нужен по требованию, то есть сервер не будет 700 радиостанций одновременно переваривать в разные битрейт. Скажем юзер обратился и тогда уже пошёл процесс.

Самый простой пример:

1) Знаем url-поток (https://mysite.com/stream.mp3) и знаем в каком битрейте она отдаётся (320kbps).
2) Посылаем эту ссылку себе на сервер (неважно как именно), допустим с помощью POST запроса.
3) Получаем ответ в виде таких же аудио данных, но с более низким битрейтом, заранее указанным в том же POST запросе. Допустим 128kbps.

Не знаю как по другому сформулировать этот вопрос можно. Нужно понять, возможно ли реализовать такое, какие библиотеки потребуются, на каком языке проще будет написать реализацию или есть что то готовое?
P.S: Просьба не предлагать всякие icecast и его "маунты" потоков, чтоб ретранслировать потом и т.д. Так как сервер не знает что за поток нужно преобразовывать и узнает лишь когда к нему будет обращение.
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
TequilaOne
@TequilaOne Автор вопроса
В общем сделал без всяких теорий. На php, с помощью ffmpeg и "динамического" создания маунта в icecast через exec() и некоторой php логики с обновлением метаданных, так как ffmpeg не хочет и не дружит с прокидыванием мета информации в поток.

В последствии чего дописать пришлось и реализацию прокидывания метаданных в icecast маунты, и удаление созданных маунтов через php + curl, дёргая ссылку на уничтожение.

p.s: Если кто-то использовал ffmpeg и icecast2 в связке, расскажите о нагрузке на процессор каждого запущенного инстанса ffmpeg. У меня это значение колеблется от 1,4 до 3,5 % на одном ядре 2600Mhz.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Теория тут: https://en.wikipedia.org/wiki/Adaptive_bitrate_str..., а остальное по ссылкам
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы