使用 PHP FFMpeg 为维度传递负值

Passing negative values for dimensions with PHP FFMpeg

我正在处理一个遗留项目,该项目使用 FFMpeg 处理上传的视频。我继承的代码从命令行使用 escapeshellarg() 到 运行 FFMpeg,这是有问题的,因为它不提供任何跟踪进度的方法,所以我使用 [=15= 重写它].

我对调整视频大小有点困惑。长宽比需要保持不变,因此传递给比例尺命令行的尺寸是 -vf scale=-1:720,我对文档的解释是您需要按如下方式传递尺寸:

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

然而,Dimension class 的构造函数只接受整数,我不清楚我将如何在这里指定负维度。 Google 不是很有用,项目中存在的问题也没有。

知道如何通过所需的维度吗?我不经常使用 FFMpeg,所以我不是很熟悉它。

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

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