html php 实现视频
使用HTML5和PHP实现视频播放
在网页中嵌入视频可以通过HTML5的<video>标签实现,结合PHP可以动态管理视频内容。以下是具体实现方法:
HTML5视频嵌入
<video width="640" height="360" controls>
<source src="video.mp4" type="video/mp4">
您的浏览器不支持HTML5视频
</video>
controls属性添加播放器控件(播放/暂停等)- 支持多种视频格式(MP4、WebM、Ogg)
- 提供后备文本在不支持时显示
PHP动态加载视频
<?php
$videoFile = 'uploads/' . basename($_GET['video']);
if(file_exists($videoFile)) {
?>
<video width="640" height="360" controls>
<source src="<?php echo htmlspecialchars($videoFile); ?>" type="video/mp4">
</video>
<?php
} else {
echo "视频文件不存在";
}
?>
视频上传处理
PHP可以处理用户上传的视频文件:
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['video'])) {
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["video"]["name"]);
$uploadOk = 1;
$videoFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
// 检查文件类型
if($videoFileType != "mp4" && $videoFileType != "webm") {
echo "仅支持MP4和WebM格式";
$uploadOk = 0;
}
// 检查文件大小(示例限制为50MB)
if ($_FILES["video"]["size"] > 50000000) {
echo "文件过大";
$uploadOk = 0;
}
if ($uploadOk == 1) {
if (move_uploaded_file($_FILES["video"]["tmp_name"], $targetFile)) {
echo "上传成功";
} else {
echo "上传失败";
}
}
}
视频流传输
对于大视频文件,可以实现分块传输:
$filePath = 'path/to/video.mp4';
$fileSize = filesize($filePath);
$chunkSize = 1 * 1024 * 1024; // 1MB chunks
if ($range = $_SERVER['HTTP_RANGE']) {
$parts = explode('-', substr($range, 6));
$start = intval($parts[0]);
$end = min($start + $chunkSize, $fileSize - 1);
header('HTTP/1.1 206 Partial Content');
header("Content-Range: bytes $start-$end/$fileSize");
header("Content-Length: " . ($end - $start + 1));
$file = fopen($filePath, 'rb');
fseek($file, $start);
echo fread($file, $end - $start + 1);
fclose($file);
} else {
header("Content-Length: $fileSize");
readfile($filePath);
}
视频缩略图生成
使用FFmpeg生成视频缩略图:
$videoPath = 'video.mp4';
$thumbnailPath = 'thumbnail.jpg';
$ffmpegCommand = "ffmpeg -i $videoPath -ss 00:00:01 -vframes 1 $thumbnailPath";
exec($ffmpegCommand);
安全注意事项
- 验证上传文件类型和内容
- 限制上传文件大小
- 存储上传文件在web根目录外
- 使用随机文件名防止覆盖
- 设置适当文件权限
以上方法提供了完整的视频处理方案,从基础播放到高级功能实现。根据具体需求可以选择相应技术组合。







