我正在处理一个使用FFMpeg处理上传视频的旧项目。我继承的代码使用escapeshellarg()
从命令行运行FFMpeg,这是有问题的,因为它没有提供跟踪进度的任何方法,因此我使用{{3}重写它}。
我在调整视频大小时有点难过。宽高比需要保持不变,因此传递给规模命令行的尺寸为-vf scale=-1:720
,我对文档的解释是您需要传递尺寸,如下所示:
$dimension = new FFMpeg\Coordinate\Dimension('-1', '720');
$video->filters()->resize($dimension)->synchronize();
但是,Dimension
类的构造函数只接受整数,并且我不知道如何在此处指定负维。谷歌并没有非常有用,也没有关于该项目的现有问题。
知道如何通过所需的尺寸吗?我不经常使用FFMpeg,所以我对它并不十分熟悉。
答案 0 :(得分:0)
最后想出来了。结果是resize()
的第二个参数是模式,它确定如何缩放两个维度。如果将其设置为缩放宽度以适合高度,则应按预期工作:
$dimension = new FFMpeg\Coordinate\Dimension('-1', '720');
$mode = FFMpeg\Filters\Video\ResizeFilter::RESIZEMODE_SCALE_HEIGHT;
$video->filters()->resize($dimension, $mode)->synchronize();