PHP后端读取文件给video标签返回视频地址
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP后端读取文件给video标签返回视频地址,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1868字,纯文字阅读大概需要3分钟。
内容图文
![PHP后端读取文件给video标签返回视频地址](/upload/InfoBanner/zyjiaocheng/822/738d3c937ef34582b42722e13fe2ec51.jpg)
获取请求文件内容起始位
通过$_SERVER['HTTP_RANGE']或者TP5的request()->header('Range')方法来获取原始头
Range: bytes=0- //请求头原样
/**
* 获取请求偏移值
* @param string $range 请求头range值
* @param int 请求文件偏移值
*/
private function getPlayOffset($range)
{
$offset = 0;
if ($range == false) {
$offset = 0;
} else {
list($key, $offset) = explode('=', $range);
$offset = trim($offset, '-');
}
return $offset;
}
获取文件内容
通过file_get_contents来读取文件内容
/**
* 获取文件流
* @param string $file 文件绝对路径
* @param int $offset 文件偏移值
* @param int $length 请求的文件长度
* @return $stream 文件内容
*/
private function getFileStream($file, $offset,$length)
{
//超时或超出大小可以修改PHP参数 memory_limit和max_execution_time
//set_time_limit(0)
$size = filesize($file);
//限制超出文件长度
if($offset+$length>=$size){
$length=$size;
}
return @file_get_contents($file, false, null, $offset, $length);
}
设置响应头
需要输出以下3个响应头
Content-Length: 27602948 // 本次响应文件长度
Content-Range: bytes 0-27602947/27602948 {偏移起始值}-{偏移结束值-1}/{文件总大小}
Content-Type: video/mp4
/**
* 获取文件流
* @param string $file 文件绝对路径
* @param int $offset 文件偏移值
* @param int $length 请求的文件长度
* @return 响应头
*/
private function getVideoHeader($file, $offset,$length)
{
$size = filesize($file);
$end=0;
//设置返回长度范围
if($offset+$length>=$size){
$end=$size-1;
}else{
$end=$offset+$length- 1;
}
$header = [
'Content-Length' => ($length-1),
'Content-Range' => 'bytes ' . $offset . "-" . $end . "/" . $size,
'Content-Type' => 'video/mp4'
];
return $header;
}
输出结果
这里需要返回206状态码
使用header()设置响应头返回文件内容
TP5可以使用response()方法响应;
response($stream, 206, $header);
try {
$stream = $this->getFileStream($file, $offset,$length);
$header = $this->getVideoHeader($file, $offset,$length);
} catch (\Exception $e) {
exit($e->getMessage());
}
return response($stream, 206, $header);
内容总结
以上是互联网集市为您收集整理的PHP后端读取文件给video标签返回视频地址全部内容,希望文章能够帮你解决PHP后端读取文件给video标签返回视频地址所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。