在php中通过ffmpeg指定视频分辨率,核心是调用`-vf scale=宽:高`参数。你可以使用`ffmpeg-php`、`php-ffmpeg`或`symfony/process`等库来执行系统命令。直接传入目标像素值(如`scale=1280:720`)即可强制输出指定分辨率,若需保持宽高比则使用`scale=-2:720`让宽度自动计算。

如何保持原始宽高比进行缩放
当只指定高度或宽度时,FFmpeg会自动计算另一维度以保持比例。例如设置`scale=-2:720`表示高度固定为720像素,宽度自动按比例调整并取偶数。这种方式避免画面拉伸变形,适合大多数视频播放场景。

<?php $video = 'input.mp4';
$output = 'output_720p.mp4';
// 高度固定720,宽度自动计算
$cmd = "ffmpeg -i {$video} -vf \"scale=-2:720\" -c:a copy {$output}";
system($cmd);
?>
运行上述代码后,输出视频的分辨率将变为类似1280x720或1920x720,具体取决于输入视频的原始比例。音频流会被直接复制而不重新编码,以节省处理时间。
如何强制指定固定分辨率
若需要精确控制输出尺寸,如必须为1920x1080,即使原始比例不符也要强制拉伸或填充,可直接传入两个数值:`scale=1920:1080`。此时如果输入视频比例不同,画面会被拉伸变形。为避免黑边,可结合`pad`参数添加背景色填充。
本地 Ollama 文生图工具。使用 x/z-image-turbo 模型生成图片,分辨率 1024x1024,每张图约耗时 90 秒。当用户说"生成图片"、"文生图"、"画一张图"、或提交中文提示词生成图像时使用。

<?php $video = 'input.mp4';
$output = 'output_1080p.mp4';
// 强制1920x1080,不保持比例
$cmd = "ffmpeg -i {$video} -vf \"scale=1920:1080\" -c:a copy {$output}";
system($cmd);
?>
该命令会将视频强制缩放到1920x1080,若原始比例非16:9,画面将出现拉伸。适用于对分辨率有严格要求的上传平台或广告位展示场景。
scale参数中-2的含义是什么
在`scale`滤镜中,宽度或高度设为`-2`表示该维度由FFmpeg根据另一维度和原始宽高比自动计算,并确保结果为偶数。这是因为许多视频编解码器要求宽高必须是2的倍数,否则可能报错或产生兼容性问题。使用`-2`可兼顾自动化与兼容性。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










