php实现视频压缩
使用FFmpeg进行视频压缩
FFmpeg是一个强大的开源多媒体处理工具,支持视频压缩和格式转换。PHP可以通过调用FFmpeg命令行工具实现视频压缩。
安装FFmpeg后,使用PHP的exec()或shell_exec()函数调用FFmpeg命令:
$inputFile = 'input.mp4';
$outputFile = 'output.mp4';
$ffmpegCommand = "ffmpeg -i $inputFile -vcodec libx264 -crf 28 -preset fast -acodec aac $outputFile";
exec($ffmpegCommand);
参数说明:
-crf 28:控制压缩质量(范围18-28,数值越大压缩率越高)-preset fast:平衡压缩速度和文件大小
使用PHP-FFmpeg库
PHP-FFmpeg是一个封装FFmpeg的PHP库,提供更友好的API:

require 'vendor/autoload.php';
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('input.mp4');
$video->save(new FFMpeg\Format\Video\X264(), 'output.mp4');
可以通过格式对象设置更多参数:
$format = new FFMpeg\Format\Video\X264();
$format->setKiloBitrate(1000); // 设置目标比特率
$format->setAudioCodec('aac');
$video->save($format, 'output.mp4');
调整视频分辨率
降低分辨率可以有效减小文件大小:

$ffmpegCommand = "ffmpeg -i $inputFile -vf scale=640:480 -c:v libx264 -crf 28 $outputFile";
减少帧率
降低帧率可以进一步压缩:
$ffmpegCommand = "ffmpeg -i $inputFile -r 24 -c:v libx264 -crf 28 $outputFile";
使用H.265编码
H.265(HEVC)比H.264有更好的压缩率:
$ffmpegCommand = "ffmpeg -i $inputFile -c:v libx265 -crf 28 -c:a aac $outputFile";
注意事项
服务器需要安装FFmpeg并确保PHP有执行权限。对于大文件处理,需要考虑超时设置和内存限制:
set_time_limit(0);
ini_set('memory_limit', '1024M');
处理用户上传文件时,应验证文件类型和大小,避免安全风险。对于Web应用,可以考虑将压缩任务放入队列异步处理,避免阻塞主线程。






