-
Star
(129)
You must be signed in to star a gist -
Fork
(63)
You must be signed in to fork a gist
-
-
Save vluzrmos/993d400739dd2e9aa47d to your computer and use it in GitHub Desktop.
<?php | |
Route::get('/player', function () { | |
$video = "video/os_simpsons_s25e22_720p.mp4"; | |
$mime = "video/mp4"; | |
$title = "Os Simpsons"; | |
return view('player')->with(compact('video', 'mime', 'title')); | |
}); | |
Route::get('/video/{filename}', function ($filename) { | |
// Pasta dos videos. | |
$videosDir = base_path('resources/assets/videos'); | |
if (file_exists($filePath = $videosDir."/".$filename)) { | |
$stream = new \App\Http\VideoStream($filePath); | |
return response()->stream(function() use ($stream) { | |
$stream->start(); | |
}); | |
} | |
return response("File doesn't exists", 404); | |
}); |
<?php | |
namespace App\Http; | |
/** | |
* Description of VideoStream | |
* | |
* @author Rana | |
* @link https://gist.github.com/vluzrmos/d5682ad426525196d069 | |
*/ | |
class VideoStream | |
{ | |
/* Visite o link https://gist.github.com/vluzrmos/d5682ad426525196d069 para ver o conteúdo desse arquivo. */ | |
} |
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>{{$title}}</title> | |
<link href="//vjs.zencdn.net/4.12/video-js.css" rel="stylesheet"> | |
</head> | |
<body> | |
<video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered" | |
controls preload="auto" height="600" width="980"> | |
<source src="{{url($video)}}" type="{{$mime}}" /> | |
</video> | |
<script src="//vjs.zencdn.net/4.12/video.js"></script> | |
<script> | |
videojs(document.getElementById('example_video_1'), {}, function() { | |
// This is functionally the same as the previous example. | |
}); | |
</script> | |
</body> | |
</html> |
Thanks you
thank you. it helped me a lot
Thank you so much, it helped me too
Thanks you. Very helpful.
Is this support for playing 'avi' video extension?
Thank you
thanks a lot
thanks a lot. very good.
Hello guys. I had same error in IE11. To solve this issue you need add header("Accept-Ranges: bytes"); after 83 string in VideoStream class.
This header is important for IE browsers.
Thank you so much.
Thanks a lot.
I would recommend to use \ResponseFactory::download
or \Symfony\Component\HttpFoundation\BinaryFileResponse
directly, because Content-Range
header already supported by them.
Route::get('/video/{filename}', function ($filename) {
$videosDir = base_path('resources/assets/videos');
$filePath = $videosDir.'/'.$filename
if (file_exists($filePath)) {
return abort(404);
}
$name = basename($filePath);
return response()->download($filePath, $name, [
'Content-Type' => 'video/mp4',
]);
});
Route::get('/video/{filename}', function ($filename) {
$videosDir = base_path('resources/assets/videos');
$filePath = $videosDir.'/'.$filename
if (file_exists($filePath)) {
return abort(404);
}
$response = new BinaryFileResponse($filePath, 200, [
'Content-Type' => 'video/mp4',
]);
$name = basename($filePath);
$response->setContentDisposition('attachment', $name, str_replace('%', '', Str::ascii($name)));
return $response;
});
The second version is basicly just an unwrapped version of the first one.
Hey guys, this is working thank you for the help. Just one question how can you use this solution to stream a live video.. from a software like OBS or Wirecast. Basically you have a camera connected to your computer and you want to stream the video. thank you
Hey guys, this is working thank you for the help. Just one question how can you use this solution to stream a live video.. from a software like OBS or Wirecast. Basically you have a camera connected to your computer and you want to stream the video. thank you
Please drop the solution here if you get it. I'm looking for the similar concept of live video streaming
This is really useful... thank you !
Very concise and efficient piece of codes!
nice
Thank you. It helped me alot.
this is realy usefull. Thanks.