Я работаю над устаревшим проектом, который использует FFMpeg для обработки видео при загрузке. Код, который я унаследовал, использует escapeshellarg()
запустить FFMpeg из командной строки, что проблематично, потому что он не предоставляет никаких средств для отслеживания прогресса, поэтому я переписываю его, используя PHP-FFMpeg.
Я немного озадачен изменением размера видео. Соотношение сторон должно оставаться неизменным, поэтому размеры, передаваемые в командную строку для масштаба, были -vf scale=-1:720
и моя интерпретация документов заключается в том, что вам необходимо пройти измерения следующим образом:
$dimension = new FFMpeg\Coordinate\Dimension('-1', '720');
$video->filters()->resize($dimension)->synchronize();
Тем не менее, конструктор Dimension
класс принимает только целые числа, и неясно, как я могу указать здесь отрицательное измерение. Google не очень полезен, и не имеет существующих проблем в проекте.
Любая идея, как я мог пройти через необходимые размеры? Я не часто использую FFMpeg, поэтому я не очень знаком с ним.
Разобрался в этом в конце. Оказывается, второй аргумент resize()
это режим, который определяет, как масштабировать два измерения. Если вы установите масштаб в соответствии с высотой, он должен работать так, как ожидается:
$dimension = new FFMpeg\Coordinate\Dimension('-1', '720');
$mode = FFMpeg\Filters\Video\ResizeFilter::RESIZEMODE_SCALE_HEIGHT;
$video->filters()->resize($dimension, $mode)->synchronize();
Других решений пока нет …