我正在开发一个使用 FFMpeg 处理上传视频的遗留项目。我继承的代码使用 escapeshellarg()
从命令行运行 FFMpeg,这是有问题的,因为它没有提供任何跟踪进度的方法,所以我使用 PHP-FFMpeg 重写它.
我在调整视频大小时有点难过。纵横比需要保持不变,因此传递给命令行的比例尺寸为 -vf scale=-1:720
,我对文件的解释是,您需要按如下方式传递尺寸:
$dimension = new FFMpeg\Coordinate\Dimension('-1', '720');
$video->filters()->resize($dimension)->synchronize();
但是,
Dimension
的构造函数类只接受整数,目前还不清楚我将如何在这里指定一个负维度。谷歌不是很有用,项目上也没有现有的问题。知道如何通过所需的尺寸吗?我不经常使用 FFMpeg,所以我对它不是很熟悉。
最佳答案
最后想通了这个。结果是 resize()
的第二个参数是模式,它决定了如何缩放两个维度。如果您将其设置为缩放宽度以适应高度,它应该按预期工作:
$dimension = new FFMpeg\Coordinate\Dimension('-1', '720');
$mode = FFMpeg\Filters\Video\ResizeFilter::RESIZEMODE_SCALE_HEIGHT;
$video->filters()->resize($dimension, $mode)->synchronize();
关于php - 使用 PHP FFMpeg 为维度传递负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50721973/