首页 > 解决方案 > PHP 无法播放 .m3u8 直播

问题描述

我正在尝试.m3u8使用 PHP 的readfile(). 然而,播放器似乎只加载视频但无法播放。此外,我没有收到任何错误。使用相同的代码,我可以毫无问题地播放预先录制的视频(例如.mp4prerecorded )。.m3u8有任何想法吗?

<?php

//Live video URL: https://abclive1-lh.akamaihd.net/i/abc_live01@423395/master.m3u8

//Pre recorded video URL: http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8

$url = $_GET['url'];

if (!$url) {
print "no URL";
} 


else {


$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$lastUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

header('Content-Type: application/x-mpegurl'); 

readfile($lastUrl); 

curl_close($ch);

}
?>

标签: phpvideo-streaming

解决方案


要播放 *.m3u8 文件,客户端需要有支持HLS 协议的特定播放器。

要在浏览器中播放,您可以尝试videojs + videojs-contrib-hls插件。

对于在桌面上播放,您可以尝试使用VLC 媒体播放器。只需安装它并打开您的*.m3u8.

要实现 hls 流,您可以使用nginx-vod Web 服务器(修改后的 nginx 版本)。这是NY Times 提供的一个工作dockerized 示例。


推荐阅读