PHP怎么把多张图片合成mp4
使用ffmpeg命令行工具配合php的exec函数,通过循环读取图片序列并调用ffmpeg命令,可以将多张图片合成为mp4视频。具体做法是确保图片命名有序(如img001.jpg, img002.jpg),在php中构建包含输入路径、帧率、输出格式等参数的ffmpeg命令字符串,执行该命令即可生成目标视频文件。若图片数量较多或路径复杂,建议先验证单条命令在终端的有效性,再封装为php函数处理异常和日志。

如何控制视频的帧率和分辨率
在构建FFmpeg命令时,通过添加-framerate参数指定每秒帧数,使用-s参数强制设定输出视频的宽度和高度,从而精确控制视频的播放速度和画面尺寸。例如设置-framerate 25可使视频以25fps播放,-s 1920x1080则确保输出为全高清分辨率。这些参数直接嵌入到PHP执行的shell命令中,影响最终生成的MP4文件的媒体属性。

<?php $images = glob('input_images/*.jpg');
sort($images);
$output = 'output.mp4';
$framerate = 25;
$resolution = '1920x1080';
$command = sprintf(
'ffmpeg -framerate %d -i "%%3d.jpg" -s %s -c:v libx264 -pix_fmt yuv420p %s',
$framerate,
$resolution,
escapeshellarg($output)
);
// 假设当前目录已切换到图片所在目录
chdir('input_images');
exec($command . ' 2>&1', $output_array, $return_var);
if ($return_var !== 0) {
echo 'Error: ' . implode("\n", $output_array);
} else {
echo 'Video created successfully.';
}
?>
基于程序中某个输入、条件或结果的具体问题
当图片文件名不连续或缺失中间序号时,FFmpeg默认按字母顺序排序可能导致画面错乱,此时需确保文件名严格遵循%d格式且无断号。若输入目录中存在非图片文件,glob函数可能将其纳入数组,导致命令失败,因此应在PHP中过滤仅保留图像扩展名,并在执行前检查文件存在性以避免空指针或无效输入错误。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











