spacecatninja/imager-x-video-adapter

用于从视频文件中提取和转换图像的 Imager X 文件适配器

1.1.0 2024-02-09 20:35 UTC

This package is auto-updated.

Last update: 2024-09-09 22:08:17 UTC


README

一个用于使用 Imager X 从视频中提取和转换图像的插件。
此外,也是如何为 Imager X 创建自定义文件适配器的示例

要求

此插件需要 Imager X 4.1+/5.0+、Craft CMS 4.0+/5.0+、PHP 8.0+ 以及一个正常工作的 ffmpeg 安装

安装

要安装插件,请按照以下说明操作

  1. 通过在项目目录中运行 composer require spacecatninja/imager-x-video-adapter 使用 composer 安装。
  2. 在 Craft 控制面板的设置 → 插件下安装插件,或通过命令行 ./craft install/plugin imager-x-video-adapter 安装。

使用方法

按照以下说明安装和配置适配器。

现在,您可以通过将视频文件添加到 Imager 的 transformImage 方法中来简单地提取帧

{% set transform = craft.imagerx.transformImage(myVideoAsset, { width: 200 }) %}

您可以通过传递 adapterParams 转换参数将配置参数传递给适配器

{% set transform = craft.imagerx.transformImage(myVideoAsset, { width: 200, adapterParams: { time: '50%' } }) %}

您还可以单独创建适配器,这可以更好地控制设置并检查视频。

{% set video = craft.videoadapter.load(asset, { format: 'png' }) %}

Video duration: {{ video.getDuration() }}<br>

{% do video.setTime(video.getDuration()/2) %}
{% set thumbAtCenter = craft.imagerx.transformImage(video, { width: 600 }) %}

关于时间的一个警告

同步问题一直困扰着视频处理,此插件也不例外。例如,如果您尝试提取视频的“最后一帧”,通过将 100% 传递给 time 参数,您很可能会得到错误。即使您已经使用了 video.getDuration() 并将其传递,ffmpeg 也通常无法提取帧。

唯一的解决方案是回退半秒钟左右,这通常会得到一个可用的帧。

自动生成

视频适配器与 Imager X 的自动生成功能配合得很好。您需要做的只是将视频适配器配置为注册的视频文件扩展名添加到要转换的安全文件格式列表中,使用配置设置'safeFileFormats'

'safeFileFormats' => ['jpg', 'jpeg', 'gif', 'png', 'mp4', 'mov', 'avi']

配置

您可以通过在您的配置文件夹中创建一个名为 imager-x-video-adapter.php 的文件来配置适配器,并按需覆盖设置。

ffmpegConfig [数组]

默认: []
在底层,此适配器使用出色的 PHP-FFMPEG 库。它尝试自动检测您的 ffmpeg 和 ffprobe 安装,并设置合理的默认值。但如果它无法检测到您的运行时,您需要手动配置它。

此配置设置接收一个数组,该数组直接传递给FFMpeg/FFProbe 的 create 方法。以下是一个包含所有可用设置的示例

'ffmpegConfig' => [
    'ffmpeg.binaries'     => '/usr/local/bin/ffmpeg',
    'ffprobe.binaries'    => '/usr/local/bin/ffprobe',
    'timeout'             => 3600, // The timeout for the underlying process
    'ffmpeg.threads'      => 12,   // The number of threads that FFMpeg should use
    'temporary_directory' => '/var/ffmpeg-tmp'
]

defaultFormat [字符串]

默认: 'jpg'
设置适配器生成的临时位图图像的默认格式。当然,您可以使用 Imager 在稍后将其转换为所需的任何格式。

defaultTime [整数|浮点数|字符串]

默认: '25%'
设置视频缩略图提取的默认时间。它可以是一个表示秒的整数或浮点数,也可以是一个表示视频相对时间的百分比字符串。

addFileFormats [数组]

默认值: ['mp4','mov','avi']
指定当传递给Imager时应添加的文件扩展名以使用此适配器。确保添加的任何文件格式都可以由您的ffmpeg安装使用。

cacheEnabled [布尔值]

默认值: true
启用/禁用生成图像的缓存。只有在测试时才禁用此选项,因为它将严重影响性能。

cacheDuration [布尔值|整数]

默认值: false
如果cacheEnabled设置为true,则设置cacheDuration。默认情况下,永久有效。清除Imager运行时缓存也将清除此缓存。

价格、许可证和支持

此插件遵循MIT许可证发布。它需要Imager X,这是一个商业插件,可在Craft插件商店中找到:Craft插件商店