Как определить, существует ли поток icecast/shoutcast?

На сайте 5 потоков. Мне нужно определить, существуют ли эти потоки. Если нет, вместо этого можно воспроизвести несколько аудиофайлов.

Я использую html5 для воспроизведения потока, и URL-адреса потока выглядят так:

http://locus.creacast.com:9001/StBaume_grotte.ogg

Я пробовал разные вещи, но, похоже, это не работает. Потоки никогда не обнаруживаются.

Решение 1. Здесь я просто попытался проверить, существует ли файл.

if (file_exists($stream_1)) {
             $debug_output_stream_1 = "Le fichier $stream_1 existe.";
             $erreur_404_Stream_1 = true;  
        } else {
             $debug_output_stream_1 =  "Le fichier $stream_1 n'existe pas.";
             $erreur_404_Stream_1 = false;  
        }

Решения 2. Я пытаюсь обнаружить ошибку 404.

 $file_headers_1 = @get_headers($stream_1);
        if($file_headers_1[0] == 'HTTP/1.1 404 Not Found') {
            $debug_output_stream_1 = "StBaume_sommet.ogg : L'URL n'existe pas.";
            $erreur_404_Stream_1 = true;  
        }
        else {
            $debug_output_stream_1 = "StBaume_sommet.ogg : L'URL existe.";
            $erreur_404_Stream_1 = false;
        }

Вы знаете, как проверить, существуют ли потоки?


person Sébastien Gicquel    schedule 11.03.2013    source источник


Ответы (1)


Вы проверяете всю строку состояния, включая версию HTTP HTTP/1.1. Большинство серверов возвращают HTTP/1.0. Вам нужно проверить только код состояния.

if (strpos($file_headers_1[0], '200 OK') === false) {
    // error occurred
}
person Alexandru Guzinschi    schedule 11.03.2013
comment
Спасибо, вы правы. Знаете ли вы, почему проверка существования моих потоков занимает очень много времени, но если я проверяю URL-адрес, например stackoverflow.com, проверка очень быстро. Это проблема с сервером? - person Sébastien Gicquel; 12.03.2013
comment
@SébastienGicquel У этого может быть много причин. Сеть, сервер (неправильная) конфигурация и многое другое. Попробуйте сделать это шаг за шагом и проверить каждую возможную причину, пока не найдете проблему. - person Alexandru Guzinschi; 12.03.2013
comment
Лучше всего проверить только номер кода состояния и игнорировать сообщение с ним. - person Brad; 12.03.2013