public function getScreenshot($storage_id){
ini_set('memory_limit',-1); //没有内存限制
set_time_limit(0);//不限制执行时间
//ffmpeg配置
$path = [
'ffmpeg.binaries' => '/usr/local/ffmpeg-6.0/ffmpeg',
'ffprobe.binaries' => '/usr/local/ffmpeg-6.0/ffprobe',
'timeout' => 3600,//基础进程的超时
'ffmpeg.threads' => 12//FFMpeg应使用的线程数
];
$ffmpeg = FFMpeg::create($path);
$ffprobe= FFProbe::create($path);
//视频文件夹
$video_dir = ROOT_PATH .'public/uploads/mp4/';
// $videoInfo=$ffprobe->format($video_dir."/bear.mp4");//也可以使用get获取特定值,第二个参数为默认值(若该参数不存在将返回此默认值)
//时长 s
// echo "执行开始".date("Y-m-d H:i:s")."\n";
//获取视频名称
$copy_jpg = ROOT_PATH.'public/uploads/mp4file';
if (!is_dir($copy_jpg)) {
// 创建文件加
mkdir($copy_jpg, 0777, true);
}
$file = $video_dir.$storage_id.'.mp4';
$duration=$ffprobe->format($file)->get('duration',100);//获取视频时长
$random = rand(1,intval($duration));//截去毫秒并生成一个随机数(不需要可改为固定数(不超过视频时长))
//截去视频图片并保存
$video = $ffmpeg->open($file);
$jpgName = pathinfo($file,PATHINFO_FILENAME).".jpg";
// var_dump($random);
// var_dump($copy_jpg.'/'.$jpgName);
$video->frame(TimeCode::fromSeconds($random))->save($copy_jpg.'/'.$jpgName);
//echo "执行成功源文件".$file.",截图为".$copy_jpg.'/'.$jpgName."\n";
unlink($video_dir.'/'.$storage_id.'.mp4');
return '/uploads/mp4file'.'/'.$jpgName;
}
本文共 个字数,平均阅读时长 ≈ 分钟,您已阅读:0时0分0秒。
649494848