HLS中的时间转换?

时间:2015-07-07 11:06:30

标签: python nginx hls

我在应用程序' live':

中为hls创建了以下配置
hls on;
hls_path /hls;
hls_fragment 5s;
hls_playlist_length 12h;
hls_fragment_naming system;
hls_continuous on;
hls_nested on;

pull rtmp://localhost:1935/live/test.stream name=test.stream live=1 static;

现在index.m3u8包含以时间戳命名的块并且播放正常。 我的问题是 - 是否有可能创建一个timeshift版本的index.m3u8,它会播放流向后移的流?

所以http://server/live/test.stream/index.m3u8比赛提前6小时播放。

我听说我可能需要一个python脚本/ C来选择ts.chunks 6个小时。那么我将如何实现这一目标。

1 个答案:

答案 0 :(得分:-1)

你也可以使用php来获得这样的URL:

http://xxx.xxx.xxx.xxx/index.php?starttime=1360000000&endtime=1370000000

然后您可以定义任何开始和结束时间来创建动态m3u8

这是index.php的一个例子

<?php
$starttime = $_REQUEST["starttime"];
$endtime = $_REQUEST["endtime"];

$m3u8file = "#EXTM3U\n#EXT-X-KEY:METHOD=NONE\n#EXT-X-TARGETDURATION:10\n#EXT-X-MEDIA-SEQUENCE:".substr($starttime,0,9)."\n\n";
for ($i=substr($starttime,0,9);$i<=substr($endtime,0,9);$i++){
    if (file_exists("/xxxpath/".date("YmdH",$i*10)."/".substr($i,0,9).".ts")) {
        $m3u8file .= "#EXTINF:10,\n";
        $m3u8file .= "/xxxpath/".date("YmdH",$i*10)."/".substr($i,0,9).".ts\n";
    }
}
$m3u8file .= "#EXT-X-ENDLIST\n";

header('Content-Type: application/force-download');
header("Content-Disposition: attachment; filename=index.m3u8");
echo $m3u8file;
?>