使用PHP获取并返回媒体URL(m3u8)

时间:2017-01-26 09:34:33

标签: php html dom curl roku

我有一个托管客户视频的网站。在网站上,文件通过m3u8链接从外部加载。

客户现在希望将这些视频放在Roku频道上。

如果我只是使用网站上的m3u8链接,则会产生错误,因为生成的网址是随cookie一起发送的,因此客户端必须单击该链接并为其生成新代码。

我想尽可能(我在这里没有看到这个)是刮掉html页面,只是通过Roku网站上的PHP脚本返回链接。

我知道如何使用纯PHP获取标题,但是在返回m3u8链接时遇到问题..

我确实有代码显示我不是在寻找讲义而实际上是在尝试。

这就是我用来获取标题名称的例子。

注意:我想知道是否有一个php可以自动填充每个网址的html页面,所以我不必为每个包含prelped的网址的视频使用不同的php。

<?php
$html = file_get_contents('http://example.com'); //get the html returned from the following url

$movie_doc = new DOMDocument();

libxml_use_internal_errors(TRUE); //disable libxml errors

if(!empty($html)){ //if any html is actually returned

    $movie_doc->loadHTML($html);
    libxml_clear_errors(); //remove errors for yucky html

    $movie_xpath = new DOMXPath($movie_doc);

    //get all the titles
    $movie_row = $movie_xpath->query('//title');

    if($movie_row->length > 0){
        foreach($movie_row as $row){
            echo $row->nodeValue . "<br/>";
        }
    }
}
?>

1 个答案:

答案 0 :(得分:0)

有一种简单的方法,包括使用正则表达式。

在此示例中,我们假设视频M3u8文件位于:http://example.com/theVideoPage

您可以将XML中的视频URL Source指向PHP文件。

http://thisPhpFileLocation.com

<?php
$html = file_get_contents("http://example.com/theVideoPage");

preg_match_all(
    '/(http.*m3u8)/',

    $html,
    $posts, // will contain the article data
    PREG_SET_ORDER // formats data into an array of posts
);

foreach ($posts as $post) {
    $link = $post[0];

header("Location: $link");
}
?>

现在,如果你想使用一个URL,你可以在最后附加一个URL链接,它可能看起来像这样,你可以使用一个地址,就像位于

的视频网址一样

http://thisPhpFileLocation.com?id=theVideoPage

<?php
$id = $_GET['id'];
$html = file_get_contents("http://example.com".$id);

preg_match_all(
    '/(http.*m3u8)/',

    $html,
    $things, // will contain the article data
    PREG_SET_ORDER // formats data into an array of posts
);

foreach ($things as $thing) {
    $link = $thing[1];

// clear out the output buffer
while (ob_get_status())
{
    ob_end_clean();
}

// no redirect
header("Location: $link");

}
?>