php实现视频截图
使用FFmpeg扩展实现视频截图
FFmpeg是一个强大的多媒体处理工具,可以通过PHP的exec函数调用。确保服务器已安装FFmpeg。
$videoPath = 'input.mp4';
$outputPath = 'screenshot.jpg';
$time = '00:00:05'; // 截取第5秒的帧
exec("ffmpeg -i {$videoPath} -ss {$time} -frames:v 1 -q:v 2 {$outputPath}");
使用PHP-FFmpeg库实现
PHP-FFmpeg是一个封装了FFmpeg的PHP库,提供更友好的API。

require 'vendor/autoload.php';
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open('input.mp4');
$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(5));
$frame->save('screenshot.jpg');
使用GD库处理截图
如果视频已转换为图像序列,可以用GD库处理:

$image = imagecreatefromjpeg('video_frame.jpg');
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
注意事项
确保服务器有足够权限读写文件。FFmpeg路径可能需要完整指定,如/usr/bin/ffmpeg。视频处理消耗资源较大,建议对长视频分段处理或使用队列系统。
获取视频时长
获取视频总时长可帮助确定截图时间点:
exec("ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4", $output);
$duration = floatval($output[0]);






