laravel-ffmpeg
laravel-ffmpeg copied to clipboard
how to put video's ts / m3u8 files with related video Id ?
I am try to use encrypted keys for HLS .
Followings are my m3u8 files.
// master.m3u8
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=690800,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2",FRAME-RATE=23.976
master_0_500.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1240800,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2",FRAME-RATE=23.976
master_1_1000.m3u8
#EXT-X-ENDLIST
//master_1_1000.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="e300ec55b7e5dc7e.key",IV=0x75e185f74383141d2b771d7e6a9264f0
#EXTINF:10.010000,
master_1_1000_00000.ts
#EXT-X-KEY:METHOD=AES-128,URI="5d679d24c8676767.key",IV=0x75e185f74383141d2b771d7e6a9264f0
#EXTINF:10.010000,
master_1_1000_00001.ts
#EXT-X-KEY:METHOD=AES-128,URI="c1dcc5dd983d503a.key",IV=0x75e185f74383141d2b771d7e6a9264f0
#EXTINF:10.010000,
I want to separate all videos' ts/m3u8 files as their video_id directory.
I don't want to put all video's ts/m3u8 in just 1 directory.
I made this url
http://localhost::/video/{video_id}
This url calls 'master_1_1000.m3u8' as mentioned.
And 'master_1_1000.m3u8' goes to http://localhost::/video/master_1_1000.m3u8 .
And it make '500 Internal Server Error'.
It should go to http://localhost::/video/{video_id}/master_1_1000.m3u8
How should I compose router for this ?
This is my current route.
Route::get('/video/secret/{video_id}/{key}', function ( $video_id, $key ) {
return Storage::disk('secrets')->download( $video_id . '/' . $key);
})->name('video.key');
Route::get('/video/{video_id}', function ($video_id) {
return FFMpeg::dynamicHLSPlaylist()
->fromDisk('public')
->open( $video_id . "/master.m3u8")
->setKeyUrlResolver(function ($key) use( $video_id) {
return route('video.key', [
'video_id'=> $video_id,
'key' => $key
]);
})
->setMediaUrlResolver(function ($mediaFilename) {
return Storage::disk('public')->url("video/" . $mediaFilename);
})
->setPlaylistUrlResolver(function ($playlistFilename) {
return route('video.playlist', ['video_id' => $playlistFilename]);
});
})->name('video.playlist');
Blog / youtube samples are not helpful.
Somebody can advise me ?
@magic-thomas Did you ever solved this?
I'm also not getting any URLs in the playlist manifest.
Edit: Turns out I was wrong. You basically have to re-use the Playlist Controller and inject the path. :)