Laravel 中生成 HTTP 直播流
Laravel HLS 是一个使用 AES-128 加密生成 HTTP 直播流(HLS)播放列表和片段的 Laravel 包。HLS 是苹果公司开发的基于 HTTP 的自适应比特率流协议,在大多数设备上得到广泛支持。HLS 还具有根据网络速度调整视频质量(和大小)的好处。
使用该包,你可以快速将 HLS 转换过程添加到 Eloquent 模型中。该包的工作原理是将 ConvertToHls
trait 添加到带有视频的模型中,该特性会监听模型创建和更新的事件,并将 HLS 转换分派到队列作业中:
namespace App\Models;
use AchyutN\LaravelHLS\Traits\ConvertsToHls;
use Illuminate\Database\Eloquent\Model;
class Video extends Model
{
use ConvertsToHls;
}
// Created job processes video
$video = Video::create([/* ... */]);
通过 created
作业(Job),该包在 FFMpeg 的帮助下将视频文件转换为 HLS 格式。
例如,要获取模型的 HLS 播放列表,Readme 文件举例使用包的 hls.playlist
路由的如下代码:
use App\Models\Video;
// Fetch the HLS playlist for a video
$video = Video::findOrFail($id);
$playlistUrl = route('hls.playlist', ['model' => 'video', 'id' => $video->id]);
该包组织良好,如果你正在使用 PHP 和 FFMpeg,它是一个很好的学习示例。你可以在 GitHub上查看 laravel-hls。
使用 Composer 在 Laravel>=10.x 的项目中安装:
composer require achyutn/laravel-hls
php artisan vendor:publish --provider="AchyutN\LaravelHLS\HLSProvider" --tag="hls-config"
你需要设置将使用 HLS 转换的模型别名。查看项目的 README 文件以了解用法详细信息。