使用PHP FFMpeg传递维度的负值

时间:2018-06-06 13:40:04

标签: php ffmpeg php-ffmpeg

我正在处理一个使用FFMpeg处理上传视频的旧项目。我继承的代码使用escapeshellarg()从命令行运行FFMpeg,这是有问题的,因为它没有提供跟踪进度的任何方法,因此我使用{{3}重写它}。

我在调整视频大小时有点难过。宽高比需要保持不变,因此传递给规模命令行的尺寸为-vf scale=-1:720,我对文档的解释是您需要传递尺寸,如下所示:

$dimension = new FFMpeg\Coordinate\Dimension('-1', '720');
$video->filters()->resize($dimension)->synchronize();

但是,Dimension类的构造函数只接受整数,并且我不知道如何在此处指定负维。谷歌并没有非常有用,也没有关于该项目的现有问题。

知道如何通过所需的尺寸吗?我不经常使用FFMpeg,所以我对它并不十分熟悉。

1 个答案:

答案 0 :(得分:0)

最后想出来了。结果是resize()的第二个参数是模式,它确定如何缩放两个维度。如果将其设置为缩放宽度以适合高度,则应按预期工作:

$dimension = new FFMpeg\Coordinate\Dimension('-1', '720');
$mode = FFMpeg\Filters\Video\ResizeFilter::RESIZEMODE_SCALE_HEIGHT;
$video->filters()->resize($dimension, $mode)->synchronize();