php - PHP 无法播放 .m3u8 直播
问题描述
我正在尝试.m3u8
使用 PHP 的readfile()
. 然而,播放器似乎只加载视频但无法播放。此外,我没有收到任何错误。使用相同的代码,我可以毫无问题地播放预先录制的视频(例如.mp4
prerecorded )。.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 协议的特定播放器。
要在浏览器中播放,您可以尝试videojs + videojs-contrib-hls插件。
对于在桌面上播放,您可以尝试使用VLC 媒体播放器。只需安装它并打开您的*.m3u8
.
要实现 hls 流,您可以使用nginx-vod Web 服务器(修改后的 nginx 版本)。这是NY Times 提供的一个工作dockerized 示例。
推荐阅读
- c++ - 为什么不能使用 constexpr if (expression) ,即使表达式可以在编译时进行评估
- node.js - 错误:ENOENT:没有这样的文件或目录,打开 'C:\Users\Dylan\AppData\Roaming\npm\node_modules\n_\lodash-3.*.tgz'
- objective-c - 位置经理一直在工作,但在使用时不工作
- rest - 如何在 Telerik Reporting CORS REST 服务中启用 SSL
- unity3d - 如何在 X 时间内更改 circlecollider2d 的大小
- azure-devops - 创建个人访问 VSTS 令牌但看不到它
- python - 从 tf saved_model 预测时出现 ValueError
- powershell - OpenCSManager failed 1722,RPC服务器不可用
- java - JSP 编译错误:无法解析数组
- logic - 2输入双反相器只用一个非门