Je rencontre un problème de rendu vidéo à mon avis dans Laravel 5.4.Retour d'un fichier vidéo à une vue sur laravel 5.4
J'ai vue comme suit:
<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>
La route pour obtenir le contenu vidéo est la suivante:
Route::get('video/{token}/{video}','[email protected]_video');
Et la classe ResourceController est comme indiqué ci-dessous:
<?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;
}
}
Lorsque je le joue sur un navigateur d'ordinateur portable, il fonctionne correctement comme prévu, mais lorsque j'essaie de lire la même vidéo un navigateur de téléphone mobile (même navigateur Chrome sur les deux situations), il jette l'exception suivante:
UnexpectedValueException: Le contenu de la réponse doit être une chaîne ou objet implémentant __toString(), « booléen » donné. dans /home/username/domainname.com/vendor/symfony/http-foundation/Response.php:409
S'il vous plaît quelqu'un pourrait me aider à comprendre la source du problème. Merci
Le problème avec votre approche d'une solution est que si vous avez des fichiers vidéo plus volumineux, votre application sera à court de mémoire. Votre approche ne fonctionnera que si vous renvoyez le contenu des fichiers avec le type mime correct, mais cela implique votre code pour charger le fichier en mémoire, ce qui entraînera probablement une exception de mémoire insuffisante ... –