使用 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();
我正在处理一个遗留项目,该项目使用 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();