

将文件整体解压存放。
1.在项目根目录新建一个composer.json文件,文件里写一个空对象(就是一个空的大括号)
2.初始化,执行命令:composer install
3.安装命令:composer require php-ffmpeg/php-ffmpeg
下列代码中
E:\ffmpeg\bin\ffmpeg.exe’,和 E:\ffmpeg\bin\ffprobe.exe’是步骤一安装FFMpeg存放本地盘的绝对路径
/FFMpeg获取视频第一帧为图片,使用composer下载插件。处理自动加载冲突function autoloadAdjust($video_src,$ico_src){// 取原有的加载方法$oldFunctions = spl_autoload_functions();// 逐个卸载if ($oldFunctions){foreach ($oldFunctions as $f) {spl_autoload_unregister($f);}}// 注册本框架的自动载入require $_SERVER['DOCUMENT_ROOT'] .'/vendor/autoload.php';$ffmpeg = FFMpeg\FFMpeg::create(['ffmpeg.binaries'=>'E:\ffmpeg\bin\ffmpeg.exe','ffprobe.binaries'=>'E:\ffmpeg\bin\ffprobe.exe']);$video_src = 'http://' . $_SERVER['SERVER_NAME'] . $video_src;$uqid = uniqid();//获取无序字符串$ico_img = $ico_src .'/'. $uqid . '.png'; //获取符合缩略图格式路径$ico_src_new = $_SERVER['DOCUMENT_ROOT'] . $ico_src;//获取绝对路径目录//没有文件夹,就创建if(!is_dir($ico_src_new)){mkdir($ico_src_new,0777,true);}$ico_src_new = $ico_src_new .'/'. $uqid . '.png';$video = $ffmpeg->open($video_src);//打开一个本地的视频文件$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds(1));//截取视频中第几秒的截图$frame->save($ico_src_new);//保存截图// 如果引用本框架的其它框架已经定义了__autoload,要保持其使用if (function_exists('__autoload')) {spl_autoload_register('__autoload');}// 再将原来的自动加载函数放回去if ($oldFunctions){foreach ($oldFunctions as $f) {spl_autoload_register($f);}}return $ico_img;//返回图片路径}
$ico_src = '/static/upload/image/' . date("Ymd");// 无缩略图时,自动提取第一视频第一帧为缩略图if (!$ico && preg_match('/<source\s+.*?src=\s?[\'|\"](.*?(\.mp4|\.ogg))[\'|\"].*?[\/]?>/i', decode_string($content), $srcs_video) && isset($srcs_video[1])) {$ico = autoloadAdjust($srcs_video[1],$ico_src);}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号