PHP 视频播放器
作者:迹忆客
最近更新:2023/03/28
浏览次数:
本篇文章介绍如何使用 PHP 创建视频播放器。
PHP 视频播放器
我们可以使用 HTML 流逻辑在 PHP 中创建视频播放器。 我们可以使用 PHP 打开和读取视频文件并将其发送以进行流式传输。
让我们跳到一个例子,然后描述它是如何工作的:
<?php
$Video_File = "C:\Users\Sheeraz\OneDrive\Desktop\New folder\sample.ogv";
if(!file_exists($Video_File)) return;
$File_Open = @fopen($Video_File, 'rb');
$File_Size = filesize($Video_File); // size of the video file
$Video_Length = $File_Size; // length of the video
$Video_Start = 0; // The start byte
$Video_End = $File_Size - 1; // The end byte
header('Content-type: video/mp4');
header("Accept-Ranges: 0-$Video_Length");
header("Accept-Ranges: bytes");
if (isset($_SERVER['HTTP_RANGE'])) {
$V_Start = $Video_Start;
$V_End = $Video_End;
list(, $Video_Range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
if (strpos($Video_Range, ',') !== false) {
header('HTTP/1.1 416 Requested Video Range Not Satisfiable');
header("Content-Range: bytes $Video_Start-$Video_End/$File_Size");
exit;
}
if ($Video_Range == '-') {
$V_Start = $File_Size - substr($Video_Range, 1);
}else{
$Video_Range = explode('-', $Video_Range);
$V_Start = $Video_Range[0];
$V_End = (isset($Video_Range[1]) && is_numeric($Video_Range[1])) ? $Video_Range[1] : $File_Size;
}
$V_End = ($V_End > $Video_End) ? $Video_End : $V_End;
if ($V_Start > $V_End || $V_Start > $File_Size - 1 || $V_End >= $File_Size) {
header('HTTP/1.1 416 Requested Video Range Not Satisfiable');
header("Content-Range: bytes $Video_Start-$Video_End/$File_Size");
exit;
}
$Video_Start = $V_Start;
$Video_End = $V_End;
$Video_Length = $Video_End - $Video_Start + 1;
fseek($File_Open, $Video_Start);
header('HTTP/1.1 206 Partial Video Content');
}
header("Content-Range: bytes $Video_Start-$Video_End/$File_Size");
header("Content-Length: ".$Video_Length);
$buffer = 1024 * 8;
while(!feof($File_Open) && ($p = ftell($File_Open)) <= $Video_End) {
if ($p + $buffer > $Video_End) {
$buffer = $Video_End - $p + 1;
}
set_time_limit(0);
echo fread($File_Open, $buffer);
ob_flush();
}
fclose($File_Open);
exit();
?>
上面的代码实现了一个视频流播放器,它可以像 HTML 5 流媒体功能一样在浏览器上播放视频。
让我们试着描述一下这个视频播放器是如何用 PHP 实现的:
- 首先,代码尝试打开视频文件,然后为其设置参数,包括视频大小、长度、起始字节和结束字节。
- 之后,代码会尝试为视频设置正确的标题。 这是最重要的一步,因为我们需要使用浏览器与浏览器进行通信。
- 在标头步骤中,我们决定视频的默认格式和浏览器将接受的视频范围。
- 当浏览器发出范围请求时使用 HTTP_RANGE。 它将验证范围请求并相应地发送数据。
- 自定义缓冲区用于优化服务器内存利用率,因此在流式传输视频时不会占用大量内存。
- 最后,关闭文件并退出。
相关文章
如何在 PHP 中获取时间差的分钟数
发布时间:2023/03/29 浏览次数:183 分类:PHP
-
本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。