Надеюсь, ты сможешь мне помочь.
У меня есть файл abc.m3u, который содержит, например:
#EXTM3U
#EXTINF:-1,CH1
https://fakedummy.net/tre002/55D6D-channel7/1.m3u8
#EXTINF:-1,CH2
https://fakeone.net/teb002/12333-channel8/1.m3u8
#EXTINF:-1,CH3
http://fake.fake/tv/m3u8/fake.m3u8?id=fake_abc
#EXTINF:-1,CH4
http://test.test:13000/xxx/jgjkg/671.ts
Может ли кто-нибудь любезно показать мне, как я могу проанализировать весь этот файл m3u (он довольно большой) в массиве php, чтобы позже можно было воспроизвести вывод позже на vlc, ffmpeg или любом проигрывателе в формате:
http://localhost/myphpfile.php?id=CH1 >to play first stream on abc.m3u file
https://fakedummy.net/tre002/55D6D-channel7/1.m3u8
http://localhost/myphpfile.php?id=CH2 >to play 2nd stream on abc.m3u file
https://fakeone.net/teb002/12333-channel8/1.m3u8
http://localhost/myphpfile.php?id=CH3 >to play 3rd stream on abc.m3u file
http://fake.fake/tv/m3u8/fake.m3u8?id=fake_abc
http://localhost/myphpfile.php?id=CH4 >to play 4th stream on abc.m3u file
http://test.test:13000/xxx/jgjkg/671.ts
Мне пришлось попробовать приведенный ниже код, и он работает только для первого chl только
<?php
$handle = curl_init();
$url = "abc.m3u";
$domain = preg_replace("(^https?://)", "", $url );
$header = array('Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3');
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLINFO_HEADER_OUT, 1);
curl_setopt($handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux
x86_64; rv:55.0) Gecko/20100101 Firefox/55.0.1');
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($handle, CURLOPT_NOSIGNAL, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
curl_setopt($handle, CURLOPT_HTTPHEADER, $header);
curl_setopt($handle, CURLOPT_HEADER, false);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($handle);
curl_close($handle);
// var_dump($result);
print_r($result);
$channel = 'CH1';// This is a channel you want to watch
$list = explode(PHP_EOL, $result);
for ($i = 0; $i < count($list); ++$i){
if ((strpos($list[$i], $channel) !== false) && ($i + 1 < count($list))) {
echo $list[$i+1];
break;
}
}
?>
Не могли бы вы помочь мне с обновлением моего кода?
Заранее спасибо