Мне нужно как-то перезапустить поток Shoutcast / Icecast с помощью PHP.
Почему?
Поскольку потоки Shoutcast / Icecast не являются https. Причем отправляется не через порт 80 и 443, а через какие-то другие странные порты. И мне нужны ссылки https на нормальных / стандартных портах, таких как 80 или 443. Это самая большая причина, хотя я думаю, что есть некоторые более, но менее важные.
Эти ссылки похожи на http://hostname.com:5921/stream
, а вместо них мне нужны ссылки типа https://hostname.com/stream?user=x
.
Я провел глубокое исследование и мало что нашел.
Я нашел такие вещи, как:
https://stackoverflow.com/questions/7998773/is-it-possible-to-restream-an-internet-radio-using-php-php-guru-needed
https://www.svnlabs.com/blogs/radio-icecast-shoutcast-php-proxy-to-re-stream-radio-stream-on-https/
https://stackoverflow.com/questions/36306457/read-mp3-stream-and-echo-back-to-client-in-php
Лучший код, который я собрал на данный момент из всех ресурсов и моих собственных попыток:
$link = 'http://shoutStreame.streamland.com/proxy/radioGame?mp=/1'; //example link to a Shoutcast stream (not working, only example)
ob_start();
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
header('Content-Disposition: attachment; filename="stream.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
$handle = fopen($link, 'r');
while (($data = fread($handle, 1024))) {
echo $data;
ob_flush();
flush();
}
И этот код не кажется ... хорошим? отлично?
Мне просто кажется, что я делаю это неправильно с этим кодом, и это неэффективно и может привести к проблемам.
Мои основные опасения:
- эффективность, особенно при большом количестве запросов
- юридические проблемы? есть ли какие-то реальные проблемы при таком подходе? перезапуск с использованием php?
- проблемы сбоя? как сбой всего php, nginx или даже машины?
- потеря соединения, например, этот php-скрипт продолжит умирать через некоторое время или что-то в этом роде
А может быть и больше.
Мне действительно сложно найти какие-либо дополнительные ресурсы, данные и информацию по этой конкретной теме перенаправления аудиопотока с использованием PHP.
Пока я действительно не знаю, что мне делать. Я просто исследую и размышляю, но, как я уже сказал, действительно сложно найти что-то еще по этой теме. И это единственный код, который у меня есть на данный момент, и я не знаю, хорошо ли его использовать ... :)