HTML5PHP动态生成m3u8文件
PHP 动态生成 m3u8 文件1 需求分析由于要在视频播放前(中)播放广告,一种 HLS 方案是在电影 m3u8 文件中插入广告的 m3u8,动态生成一个新的 m3u8 文件,播放这个新的 m3u8 文件,就可以实现播放视频时插播广告,或在播放电影之前播放广告。广告 m3u8 文件电影 m3u8 文件:2 PHP 源码PHP 程序读取这两个文件的 ts 部分内容,合成一个新的文件即可。PHP 源码参考:"/echo $mvname.""/echo date('ymdhis',time();/echo "aa".file_exists("test.txt");/$fileName = 'test.m3u8'$fileName = $adname . $mvname . ".m3u8"/echo $fileName;if (file_exists("ad2mov8.m3u8") /echo "file already exist"else/根据传进来的路径,解析出广告和电影切片文件所在路径/取最后一个/之前的内容即可$adSegSrc = substr($adsrc, 2, strrpos($adsrc, "/") - 1);$movSegSrc = substr($moviesrc, 2, strrpos($moviesrc, "/") - 1);/echo $adSegSrc .""/echo $movSegSrc.""/读广告 m3u8 文件$fp = fopen($adsrc, "r");if ($fp) for ($i = 1; !feof($fp); $i+) $lineStr = fgets($fp);if (false = strpos($lineStr, "EXT-X-ENDLIST") if (strpos($lineStr, ".ts") /echo $domainAddr.$adSegSrc.$lineStr;file_put_contents($fileName, $domainAddr . $adSegSrc . $lineStr, FILE_APPEND); else /echo $lineStr;file_put_contents($fileName, $lineStr, FILE_APPEND); else echo "打开文件失败 "fclose($fp);/读电影 m3u8 文件$fp2 = fopen($moviesrc, "r");if ($fp2) for ($i = 1; !feof($fp2); $i+) $lineStr = fgets($fp2);if (strpos($lineStr, ".ts") /echo $domainAddr.$movSegSrc.$lineStr;file_put_contents($fileName, $domainAddr . $movSegSrc . $lineStr, FILE_APPEND); else if (strpos($lineStr, "EXTINF") /echo $lineStr;file_put_contents($fileName, $lineStr, FILE_APPEND); else echo "打开文件失败 "fclose($fp2);/最后输出一个 m3u8 结尾file_put_contents($fileName, "#EXT-X-ENDLIST", FILE_APPEND);/echo "#EXT-X-ENDLIST"/返回 m3u8 file url 给调用者echo $domainAddr . "/php/" . $fileName;?>