代码之家  ›  专栏  ›  技术社区  ›  Matthew Daly

使用php-ffmpeg传递维度的负值

  •  0
  • Matthew Daly  · 技术社区  · 6 年前

    我正在做一个遗留项目,它使用ffmpeg来处理上传的视频。我继承的代码使用 escapeshellarg() 从命令行运行ffmpeg是有问题的,因为它不提供任何跟踪进度的方法,所以我使用 PHP-FFMpeg .

    在调整视频大小的问题上我有点困惑。长宽比需要保持不变,因此传递给比例命令行的尺寸为 -vf scale=-1:720 ,我对这些文档的解释是,您需要通过以下维度:

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

    但是, Dimension 类只接受整数,不清楚如何在这里指定负维度。谷歌并不是很有用,也没有这个项目上存在的问题。

    你知道我怎样才能通过规定的尺寸吗?我不经常使用ffmpeg,所以对它不是很熟悉。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Matthew Daly    6 年前

    最后终于明白了。证明了第二个论点 resize() 是模式,决定如何缩放二维。如果将其设置为缩放宽度以适应高度,则应按预期工作:

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