m3u8 ⽂件实际上是⼀个播放文件索引地址,通过里面的参数可以找到相应的时长
EXTM3U:这个是M3U8文件必须包含的标签,并且必须在文件的第一行,所有的M3U8文件中必须包含这个标签。
EXT-X-VERSION:M3U8文件的版本。
EXTINF:代表这个ts文件的时长,单位是秒。
EXT-X-ENDLIST:表示PlayList的末尾了,它可以在PlayList中的任意位置出现,但只能出现一个。
EXT-X-TARGETDURATION:指定最大的媒体段的时长(秒)。所以#EXTINF中指定的时间长度必须小于或等于这个值
了解完这几个参数基本上就知道怎么拿到总时长了
function getM3u8Duration($uri){ // 解决SSL验证问题 $arrContextOptions = [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, ] ]; try { $result = file_get_contents($uri,false,stream_context_create($arrContextOptions)); } catch (\ErrorException $e) { return 0; }// 匹配时长 preg_match_all('/\EXTINF:(.*?)\,/i', $result , $arr); $duration = array_sum($arr[1]); return (int)$duration ;}
用到的地方直接调用就行
来源地址:https://blog.csdn.net/wenf100/article/details/127231535