Проверьте, доступен ли плейлист m3u8 с cURL - PullRequest
0 голосов
/ 01 мая 2020

У меня есть сценарий cURL, который я использовал все время, чтобы проверить, существует ли файл m3u8 на сервере, так что да, затем воспроизведите файл mp4, так что нет, тогда позвольте увидеть картинку в автономном режиме.

Но со вчерашнего дня скрипт больше не работает. Я проверил, существует ли файл m3u8 с помощью curl, а затем по http-коду 200. Есть ли другой способ проверить, существует ли файл m3u8 на сервере?

<?php


function url_test( $url ) {
  $timeout = 10;
  $ch = curl_init();
  curl_setopt ( $ch, CURLOPT_URL, $url );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
  $http_respond = curl_exec($ch);
  $http_respond = trim( strip_tags( $http_respond ) );
  $http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
  if ( ( $http_code == "200" ) || ( $http_code == "302" ) ) {
    return true;
  } else {
    // return $http_code;, possible too
    return false;
  }
  curl_close( $ch );
}

$website = "***.m3u8";
if( !url_test( $website ) ) {
  echo $website ." is down!";
}
else { echo $website ." functions correctly."; }
?>

Почему это больше не работает? cURL говорит, что файл не на сервере, но я могу загрузить его с моего ноутбука по той же ссылке.

Кто может помочь?

Спасибо.

Marv

1 Ответ

0 голосов
/ 01 мая 2020

Откройте браузер, нажмите F12 и затем выберите вкладку «Сеть» в окне, которое только что открылось при нажатии F12. Затем вставьте URL-адрес m3u8 в адресную строку браузера и нажмите Enter. Запрос должен отображаться в списке запросов в разделе «Сеть». Нажмите на запрос и посмотрите код статуса HTTP, полученный вами с сервера; это может быть другой, чем 200 или 302 (случаи, которые вы освещаете в своем сценарии).

Я бы также добавил:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
...