PHP实现播放视频代码
播放视频的基本方法
在PHP中直接播放视频通常需要结合HTML5的<video>标签,PHP主要用于后端处理(如文件路径生成、权限验证等)。以下是一个基础实现示例:
<?php
// 假设视频文件存储在服务器的videos目录下
$videoPath = 'videos/sample.mp4';
$mimeType = mime_content_type($videoPath);
?>
<!DOCTYPE html>
<html>
<head>
<title>视频播放</title>
</head>
<body>
<video width="640" height="360" controls>
<source src="<?php echo $videoPath; ?>" type="<?php echo $mimeType; ?>">
您的浏览器不支持HTML5视频标签
</video>
</body>
</html>
动态视频流处理
对于需要控制访问权限或动态生成的视频流,可以使用PHP输出视频内容:
$file = 'protected/videos/premium.mp4';
if (userHasAccess()) { // 自定义权限验证
header('Content-Type: video/mp4');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
} else {
header("HTTP/1.1 403 Forbidden");
echo "无访问权限";
}
使用第三方播放器集成
集成开源播放器如Video.js可增强兼容性:
// PHP部分
$videoUrl = generateSecureVideoUrl(); // 生成加密的视频URL
// HTML部分
<link href="https://vjs.zencdn.net/7.20.3/video-js.css" rel="stylesheet">
<script src="https://vjs.zencdn.net/7.20.3/video.min.js"></script>
<video id="my-player" class="video-js" controls preload="auto">
<source src="<?= $videoUrl ?>" type="video/mp4">
</video>
视频转码处理
使用FFmpeg进行格式转换(需服务器安装FFmpeg):
$inputFile = 'uploads/original.avi';
$outputFile = 'converted/output.mp4';
$command = "ffmpeg -i $inputFile -c:v libx264 -preset fast $outputFile 2>&1";
exec($command, $output, $returnCode);
if ($returnCode === 0) {
echo "转码成功,文件已保存为: $outputFile";
} else {
echo "转码失败: " . implode("\n", $output);
}
防盗链措施
通过PHP实现视频防盗链:
$referer = $_SERVER['HTTP_REFERER'] ?? '';
$allowedDomains = ['https://yourdomain.com', 'https://subdomain.yourdomain.com'];
if (!empty($referer) && !in_array(parse_url($referer, PHP_URL_HOST), $allowedDomains)) {
header('HTTP/1.0 403 Forbidden');
die('禁止外部访问');
}
// 正常输出视频内容
header('Content-Type: video/mp4');
readfile('videos/protected.mp4');
注意事项
- 确保服务器已安装正确的视频编解码器
- 大文件视频建议使用分块传输(
header('Accept-Ranges: bytes')) - 生产环境应考虑使用CDN加速视频分发
- 敏感视频应结合数据库记录观看权限
- 上传视频时需严格验证文件类型防止恶意上传






