Php 将视频文件返回到laravel 5.4上的视图
在Laravel 5.4中,将视频渲染到我的视图时遇到问题 我的看法如下:Php 将视频文件返回到laravel 5.4上的视图,php,video,video-streaming,laravel-5.4,Php,Video,Video Streaming,Laravel 5.4,在Laravel 5.4中,将视频渲染到我的视图时遇到问题 我的看法如下: <main class="video-player"> @if(!empty($video)) <video id="my-video" class="video-js vjs-big-play-centered" controls data-setup="{}"> <source src="{{url('video/'.$token.'/'.$video)
<main class="video-player">
@if(!empty($video))
<video id="my-video" class="video-js vjs-big-play-centered" controls data-setup="{}">
<source src="{{url('video/'.$token.'/'.$video)}}" type="{{$video_mime_type}}">
<p class="vjs-no-js">
Please upgrade your browser.
</p>
</video>
@else
<div class="alert alert-info"><span class='fa fa-info-circle'></span> Lesson video is unavailable!!! </div>
@endif
</main>
Route::get('video/{token}/{video}','ResourceController@show_video');
ResourceController类如下图所示:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Storage;
use Response;
use File;
use GuzzleHttp\Mimetypes;
use App\Mime;
class ResourceController extends Controller
{
public function __construct()
{
$this->middleware('auth')->only('show_video');
}
........
........
public function show_video($token,$filename)
{
$token=\App\VideoPermission::where('token',$token)->first();
if(!empty($token))
{
$token->delete();
$mime_type=Mime::from_extension($filename);
return response()->file(storage_path('app/lesson-files/'.$filename),[
'Content-Type' => $mime_type,
'Content-Disposition' => 'inline; filename="Lesson-file"'
]);
}
return false;
}
}
我后来发现问题是返回文件内容的方法中的“if”条件造成的。因此,当由于任何原因未满足该条件时,它将返回“false”作为响应,而不是视频文件,从而导致我收到的布尔响应
当所需的令牌丢失时,代码就是这样编写的,如下所示
if(!empty($token))
{
$token->delete();
$mime_type=Mime::from_extension($filename);
return response()->file(storage_path('app/lesson-files/'.$filename),[
'Content-Type' => $mime_type,
'Content-Disposition' => 'inline; filename="Lesson-file"'
]);
}
return false;
}
我后来发现,当用户试图使用过时的浏览器访问应用程序时,会发生这种情况,而浏览器不符合返回视频内容的预期条件之一
换言之,系统实际上正在按预期工作
感谢所有试图以这种或那种方式提供帮助的人。非常感谢大家。解决方案的问题在于,如果您有更大的视频文件,您的应用程序将耗尽内存。您的方法只有在返回具有正确mime类型的文件内容时才有效,但这意味着您的代码要将文件加载到内存中,可能会导致内存不足异常。。。