vkr/ffmpeg-converter-bundle

用于处理FFMPEG多媒体转换的Symfony2/3包

1.0.4 2017-05-21 20:12 UTC

This package is auto-updated.

Last update: 2024-09-20 22:23:06 UTC


README

这是一个简单的包,用于使用流行的FFMPEG库处理多媒体格式的转换。它依赖于VKRCustomLoggerBundle来运行。

安装

除了在AppKernel.php中启用此包外,您还需要进行一些配置。

首先,将以下内容添加到parameters.yml

ffmpeg_path: /path/to/ffmpeg/executable

其次,您需要在config.yml中添加FFMPEG参数到vkr_ffmpeg_converter键下。可以有三组参数:videoaudioimage。在每组中,应有三个键:extension对应于期望的目标文件扩展名,inputoutput是FFMPEG的一系列参数。

在FFMPEG中,与大多数其他命令行工具不同,参数不是幂等的,换句话说,参数的行为取决于其在参数列表中的位置。输入参数是位于源文件名之前,输出参数位于输入和输出文件名之间。有关详细信息,请参阅FFMPEG手册

请注意,您无需在配置中指定-i参数。

最后,您需要在app/logs文件夹中创建一个日志文件,并使其可脚本写入。

使用

使用非常简单。只需在控制器中写下这行代码

$converter = $this->get('vkr_ffmpeg_converter.converter');
$sourceFile = new Symfony\Component\HttpFoundation\File\File('source/filename/with.path');
$destination = '/path/to/destination/dir/';
// corresponds to /app/logs/video_converter.log
$logFile = 'video_converter';
$converter->convertFile($sourceFile, $destination, $logFile);

您还可以向convertFile()提供第四个参数,即最大输出文件长度(秒,与-t输入参数相同)。

测试

强烈建议在编写生产代码之前运行此包附带的功能测试。功能测试将帮助您确定配置是否正确,以及此包是否与您的FFMPEG版本兼容。

目前,功能测试套件提供了WEBM和MP4以及JPEG和MP4之间的转换。没有音频转换可用。

要运行测试,请将以下内容添加到config_test.yml文件中

imports:
    - { resource: parameters_test.yml }

创建app/config/parameters_test.yml文件,并添加以下内容

parameters:
    vkr_ffmpeg_converter:
        video:
            extension: 'mp4'
            input: ''
            output: '-c:v libx264 -crf 20'
        image:
            extension: 'mp4'
            input: '-loop 1'
            output: '-c:v libx264 -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2"'

运行phpunit -c app/ vendor/vkr/ffmpeg-converter-bundle/Tests,查看所有测试是否为绿色。

在部署到实时服务器后重新运行测试。

已知限制

  • 每种多媒体类型只有一个设置集。因此,您不能为不同的输入文件类型指定不同的参数或多种转换方式。
  • 只能有一个输入文件。因此,您不能进行将多个文件粘合在一起等操作。