ivebe/lffmpeg

此包的最新版本(0.0.8)没有可用的许可信息。

带有进度条的Laravel中PHP-FFMpeg实现。即插即用。

0.0.8 2017-06-02 10:38 UTC

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的配置,这被标记为默认。可用的标签有migrationsmodelsassetsviewsdefaults。如果您是从头开始构建,则可以完全省略标签并发布所有内容。但是,如果您已经有一个系统并希望将其用于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。但是您应该知道,每个编码过程都是通过作业和队列来完成的,因此您应该正确设置您的队列。

发布供应商文件

可用的标签有 migrationsmodelsassetsviewsdefaults

  • migrations 如果您想使用预制的模型,发布迁移并运行 php artisan migrate
  • models 运行 php artisan vendor:publish --tag=modelsVideoThumbEncodingProgress 模型放置在 app 目录中。
  • assets 这将发布 js 文件到 public/assets/lffmpeg.js,该文件将包含简单的 js 代码来处理进度条的显示。如果您也发布视图,您可以看到它的使用示例。
  • views 发布示例视图文件到 resources/views/lffmpeg.blade.php
  • defaults 发布配置文件。