Хочу спросить про реализацию потокового вещания с сайта а-ля онлайн-радио.
Допустим, есть сайт и у каждого юзера набор загруженных аудио-файлов. Нужно сделать как-то так, чтобы эти файлы организовывались в некоторый плейлист на стороне сервера и проигрывались потоком. Ну а поток чтобы можно было воспроизводить медиаплеерами типа VLC или mPlayer.
Причем нужно, чтобы это было сделано как в онлайн-радиостанциях, когда поток продолжает воспроизведение даже когда нет подключенных клиентов, а не как на вконтакте, где прогрывание происходит по запросу клиентской стороны.
В онлайн-вещании никогда не разбирался — подскажите, пожалуйста, в сторону каких средств копать, чтобы такое реализовать? Сайт на PHP, но в качестве серверной площадки может быть как *nix, так и винда — в зависимости от выбранного решения.
Важный момент — поток будет не один на всех пользователей, а по одному и более на одного пользователя, то есть в итоге потоков может быть немало.
Сначала вопросы:
1. Когда закончатся файлы в плейлисте, что должно произойти?
2. Можно ли поставить воспроизведение на паузу перед выходом, чтобы потом возобновить вещание с того же места?
Теперь предложения:
1. Сделать действительно потоки. Это накладно по ресурсам и дорого в плане софта.
2. Сделать эмуляцию. Есть плейлист, есть время запуска воспроизведения этого плейлиста, есть общая длительность плейлиста, есть длительность каждого файла в плейлисте, известно текущее время. Из всего этого можно высчитать с какой секунды какого файла начинать стриминг для данного конкретного клиента.
Ответы на вопросы:
1. Это пока открытый вопрос. Предположительно — плейлист будет некоторым образом зацикливаться, чтобы не молчать.
2. Такой необходимости нет, это не онлайн-плеер музыки.
По предложениям:
1. Вы имеете ввиду реализацию потоков ручками?
2. Можно и так, но зачем, если будет софт, который поток просто генерит? Я в такой эмуляции вижу только один плюс (и то, скажем, он слабоват) — так клиент может сам определять по загруженному плейлисту, что и с какого момента он должен играть и дальше уже вытягивать треки самостоятельно (как на вышеупомянутом вконтакте). Но это кажется несколько перебором, все же, наверное проще полноценные потоки организовать.