我正在尝试使用PHP的.m3u8
通过默认的网络浏览器播放实时流readfile()
视频。然而,播放器似乎只加载视频但无法播放。此外,我没有收到任何错误。使用相同的代码,我可以播放预先录制的视频(例如.mp4
,预先录制的.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);
}
?>
对于播放* .m3u8文件,客户端需要有一个支持HLS protocol的特定播放器。
要在浏览器中播放,您可以尝试使用videojs + videojs-contrib-hls插件。
要在桌面上播放,您可以尝试使用VLC media player。只需安装它并打开你的*.m3u8
。
要实现hls流,您可以使用nginx-vod Web服务器(修改后的nginx版本)。这是纽约时报提供的一个有效的dockerized example。