ivebe / lffmpeg
带有进度条的Laravel中PHP-FFMpeg实现。即插即用。
Requires
- imagine/imagine: ~0.5.0
- laravel/framework: ~5.1
- php-ffmpeg/php-ffmpeg: ~0.5
This package is not auto-updated.
Last update: 2024-09-26 05:51:41 UTC
README
带有进度条的Laravel中PHP-FFMpeg实现。即插即用。
安装
使用composer安装。
composer require ivebe/lffmpeg
安装后,将服务提供者添加到config/app.php
文件中的providers数组中
Ivebe\Lffmpeg\LffmpegServiceProvider::class
需要发布至少一个来自vendor的配置,这被标记为默认。可用的标签有migrations
、models
、assets
、views
和defaults
。如果您是从头开始构建,则可以完全省略标签并发布所有内容。但是,如果您已经有一个系统并希望将其用于Lffmpeg,则仅发布默认(配置)并添加当前模型实现到配置文件中。
php artisan vendor:publish --tag=defaults
配置
这是放置编码设置的地方,也是处理逻辑的模型。
路径
路径不应以斜杠结尾。
- paths#tmp_path 磁盘上的临时目录路径。这是您应上传视频文件的地方。
- paths#content_path 磁盘上编码视频和缩略图的路径
FFmpeg
ffmpeg二进制文件的存储位置。
- encoding#ffmpeg_binaries ffmpeg二进制文件的绝对路径
- encoding#ffprobe_binaries ffprobe二进制文件的绝对路径
- encoding#threads 编码时使用的线程数
编码
用于编码的期望配置文件。Lffmpeg将自动检测最佳可能质量并从中编码。换句话说,如果您有的视频不是HD,则不会编码1080p配置文件,它将从最佳匹配配置文件开始。没有向上缩放。
- encoding 编码配置文件的数组。示例
/** * w - width * h - height * b - bitrate */ 'encoding' => [ '1080p' => [ 'w' => 1920, 'h' => 1080, 'b' => 2000 ], '720p' => [ 'w' => 1280, 'h' => 720, 'b' => 1500 ], '480p' => [ 'w' => 854, 'h' => 480, 'b' => 1000 ] ]
视频模型
使用VideoRepository操作视频。默认情况下,只有一个Eloquent仓库,因此您需要在配置文件中设置视频模型。如果您已经有自己的视频模型,则只需指定正确的列名,您的模型将被使用。请注意,变量用#
标记,而列名用@
标记。
- video#model 代表视频模型的类。 (例如 \App\Video::class)
- video@duration 持续时间的列名
- video@status 状态列的列名
- video@default_thumb 默认缩略图列的列名
缩略图模型
使用ThumbRepository操作缩略图。默认情况下,只有一个Eloquent仓库,因此您需要在配置文件中设置缩略图模型。如果您已经有自己的缩略图模型,则只需指定正确的列名,您的模型将被使用。请注意,变量用#
标记,而列名用@
标记。
- thumb#model 代表缩略图模型的类。 (例如 \App\Thumb::class)
- thumb#interval 缩略图之间秒数的数量
- thumb#name-format 只有参数是图像编号的sprintf字符串(例如 thumb_%s.jpg)
- thumb#width 缩略图所需宽度
- thumb#height 缩略图所需高度
- thumb@video_id 外键video_id的列名
- thumb@name 列名
- thumb@scene_time scene_time列
编码进度模型
EncodingProgress 没有它自己的存储库,它通过 VideoRepository 来操作。默认情况下只有 Eloquent 存储库,因此您需要在配置文件中设置 EncodingProgress 模型。如果您已经有了 EncodingProgress 模型,只需指定正确的列名,您的模型就会被使用。请注意,变量用 #
标记,而列名用 @
标记。
- progress#model 代表 EncodingProgress 模型的类(例如 \App\EncodingProgress::class)
- progress@video_id 外键 video_id 的名称
- progress@quality 质量列的名称
- progress@status 状态列的名称
- progress@percent 百分比列的名称
用法
基本用法就像键入 Helper::runEncoding(123);
一样简单,其中 123 是 Video 存储库中的视频 ID。但是您应该知道,每个编码过程都是通过作业和队列来完成的,因此您应该正确设置您的队列。
发布供应商文件
可用的标签有 migrations
、models
、assets
、views
和 defaults
。
- migrations 如果您想使用预制的模型,发布迁移并运行
php artisan migrate
- models 运行
php artisan vendor:publish --tag=models
将 Video、Thumb 和 EncodingProgress 模型放置在 app 目录中。 - assets 这将发布 js 文件到
public/assets/lffmpeg.js
,该文件将包含简单的 js 代码来处理进度条的显示。如果您也发布视图,您可以看到它的使用示例。 - views 发布示例视图文件到
resources/views/lffmpeg.blade.php
- defaults 发布配置文件。