2013-03-11 59 views
3

網站上有5個流。我需要檢測這些流是否存在。如果不是,則會播放一些音頻文件。如何檢測icecast/shoutcast流是否存在?

我使用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; 
     } 

你知道如何檢查是否存在流?

回答

4

您正在檢查整個狀態行,包括HTTP版本HTTP/1.1。大多數服務器返回HTTP/1.0。您只需檢查狀態碼。

if (strpos($file_headers_1[0], '200 OK') === false) { 
    // error occurred 
} 
+0

謝謝,你說得對。你知道爲什麼需要很長時間來檢查我的流是否存在,但是如果我檢查一個像「http://stackoverflow.com」這樣的URL,檢查非常快。這是服務器問題嗎? – 2013-03-11 23:13:52

+0

@SébastienGicquel它有很多原因。網絡,服務器(錯誤)配置等等。嘗試一步一步地檢查每個可能的原因,直到找到問題。 – 2013-03-11 23:38:22

+1

最好只檢查狀態代碼號,並忽略它的消息。 – Brad 2013-03-12 14:40:43