Помогите друзья с кодом на проверку валидности именно аудио потока (радиостанции) типа http://000.000.000.000:8000/;stream.nsv Есть радиостанция которая периодически меняет свой адрес потока. Как написать пхп код для проверки?
если ты используешь html audio то у него есть метод ошибки. просто проверяй его а потом воспроизводи. а на php проверь через file_get_content если отдал не 404 то все ок.
Код (Javascript): myaudio.addEventListener("error", function() { //Тут твои действия }, true); в myaudio обьект аудио тега на php PHP: if(!file_get_contents($url)){ //Тут твои действия }
Вот нашёл такой пхп код: PHP: function getRemoteFileSize($url){ $parse = parse_url($url); $host = $parse['host']; $fp = @fsockopen ($host, 80, $errno, $errstr, 20); if(!$fp){ $ret = 0; }else{ $host = $parse['host']; fputs($fp, "HEAD ".$url." HTTP/1.1\r\n"); fputs($fp, "HOST: ".$host."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); $headers = ""; while (!feof($fp)){ $headers .= fgets ($fp, 128); } fclose ($fp); $headers = strtolower($headers); $array = preg_split("|[\s,]+|",$headers); $key = array_search('content-length:',$array); $ret = $array[$key+1]; } if($array[1]==200) return $ret; else return -1*$array[1]; } $url = "http://78.129.163.82:33477/"; $size = getRemoteFileSize($url); echo $size; Решил проблему решить путём проверки страницы. В результате выдаёт -404 (типа ошибка) хотя сервер работает, должно быть 200. Может что то сервером?
слушай я же тебе говорил на 404 проверить можно и через file_get_contents PHP: if(file_get_contents("/*Твой урл*/"){ //твои действия }
Я пробовал, выдаёт: HTTP ERROR 500: PHP: if(file_get_contents("http://78.129.163.82:33477/"){ echo ' OKKKKK!'; }
посмотри внимательно свой код и увидишь в нем оибку строка один. найди сам ее. --- Добавлено --- и при отладке програм включай показ ошибок. если не помогает через php то включай в htaccess php_flag display_errors 1
фюх короче ты скобку не закрыл PHP: if(file_get_contents("http://78.129.163.82:33477/")){ echo ' OKKKKK!'; } --- Добавлено --- у себя я тоже не закрыл ее.
Я ошибку сразу нашёл))) Дело в том что если прописываю URL https://php.ru/index.php код определяет нормально, а http://78.129.163.82:33477/index.html ну не в какую не хочет. Может защита на серваке?
Возмоно и защита. Тогда проверяй на js как писал выше если поток не выдает ошибку проигрывай его иначе выеди ошибку
Код (Javascript): var myaudio = $('#audio'); //В переменную myaudio заносим обьект с id audio; myaudio.addEventListener("error", function() { //Тут твои действия если произошла ошибка например alert('Ошибка, поток не валидный!') }, true);
Код (Text): <script> var myaudio = $('#audio'); myaudio.addEventListener("error", function() { alert('Ошибка, поток не валидный!') }, true); </script> <audio id="audio" controls="controls" src="http://78.129.163.82:33477/;stream.nsv"> alert не выдает ошибку
Так потому что поток рабочий и проигрывается. откуда тут ошибка будет то? если у тебя будет поток не работчий тогда вылезет ошибка
говорил же консоль открой Uncaught ReferenceError: $ is not defined я написал с использованием jquery у тебя он не подключен вот рабочий код Код (Text): <!DOCTYPE html> <html> <body> <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script> $(document).ready(function(){ var myaudio = $("#audio")[0]; myaudio.addEventListener("error", function() { alert("Ошибка, поток не валидный!"); }, true); }) </script> <audio id="audio" controls="controls" src="https://7.129.163.82:33477/;stream.nsv"> </body> </html> --- Добавлено --- ошибку выдает через сек 10-20