PHP实现播放视频代码
PHP实现视频播放的基本方法
PHP本身不能直接播放视频,但可以通过生成HTML5视频标签或调用第三方播放器实现。以下是几种常见实现方式:
HTML5视频标签嵌入
<?php
$videoPath = "videos/sample.mp4";
?>
<video width="400" controls>
<source src="<?php echo $videoPath; ?>" type="video/mp4">
您的浏览器不支持HTML5视频
</video>
使用第三方播放器(如Video.js)
<link href="https://vjs.zencdn.net/7.10.2/video-js.css" rel="stylesheet">
<script src="https://vjs.zencdn.net/7.10.2/video.js"></script>
<video id="my-video" class="video-js" controls preload="auto" width="640" height="264"
data-setup="{}">
<source src="videos/example.mp4" type="video/mp4">
</video>
视频流处理
对于大文件或需要保护的视频,可以使用PHP处理视频流:
$file = 'path/to/video.mp4';
if (file_exists($file)) {
header('Content-Type: video/mp4');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
} else {
header("HTTP/1.0 404 Not Found");
}
视频保护措施
防止直接下载视频的方法:
$token = $_GET['token'];
if ($validToken) {
// 验证token逻辑
$filePath = 'protected/videos/'.$videoId.'.mp4';
header('Content-Type: video/mp4');
header('Content-Length: ' . filesize($filePath));
readfile($filePath);
} else {
die('无效访问');
}
自适应流媒体(HLS/DASH)
实现自适应比特率流媒体:
// HLS示例
if ($_SERVER['REQUEST_URI'] == '/stream.m3u8') {
header('Content-Type: application/x-mpegURL');
readfile('path/to/playlist.m3u8');
exit;
}
// 视频片段
if (preg_match('/\/segment(\d+)\.ts$/', $_SERVER['REQUEST_URI'], $matches)) {
header('Content-Type: video/MP2T');
readfile('path/to/segment'.$matches[1].'.ts');
exit;
}
注意事项
- 确保服务器配置正确MIME类型
- 大视频文件需要考虑内存限制
- 保护视频时注意性能影响
- 移动端兼容性测试很重要
- 考虑使用CDN分发大视频文件
以上方法可以根据具体需求组合使用,实现不同复杂度的视频播放功能。







