php FFmpeg插件dome
前端使用vue 该文件改于
1 public function actionShearedit() 2 { 3 $ffmpeg = FFMpeg::create(array( 4 'ffmpeg.binaries' => '/www/ffmpeg/bin/ffmpeg', //ffmpeg插件在服务器的位置 5 'ffprobe.binaries' => '/www/ffmpeg/bin/ffprobe', //ffprobe插件在服务器的位置 6 'timeout' => 3600, // The timeout for the underlying process 7 'ffmpeg.threads' => 12, // The number of threads that FFMpeg should use 8 ), $logger); 9 $video_file = $model->base_url; 10 $ffprobe_prep = FFProbe::create([ 11 'ffmpeg.binaries' => '/www/ffmpeg/bin/ffmpeg', //ffmpeg插件在服务器的位置 12 'ffprobe.binaries' => '/www/ffmpeg/bin/ffprobe', //ffprobe插件在服务器的位置 13 ]); 14 $first = $ffprobe_prep->streams($video_file)->videos()->first(); 15 $start = $startTime;//开始时间 16 $end = $endTime;//结束时间 17 $start_time = gmstrftime('%H:%M:%S', $start);//将长度转换为秒数
18 $process_time = $end - $start;//持续时间 19 $hosturl = ($this->isHTTPS() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST']; 20 $fileurl = '/attachment/ffmpeg_videos/'.substr($video_file,strrpos($video_file, '/')+1); 21 $shell = 'ffmpeg -ss ' . $start_time . ' -i ' . $video_file . ' -to ' . $process_time . ' -c copy '.$_SERVER['DOCUMENT_ROOT'].$fileurl; 23 shell_exec($shell);47 if($sign){ 48 return 2; 49 }else{ 50 return 1; 51 } 52 } 53 private function isHTTPS() 54 { 55 if (defined('HTTPS') && HTTPS) return true; 56 if (!isset($_SERVER)) return FALSE; 57 if (!isset($_SERVER['HTTPS'])) return FALSE; 58 if ($_SERVER['HTTPS'] === 1) { //Apache 59 return TRUE; 60 } elseif ($_SERVER['HTTPS'] === 'on') { //IIS 61 return TRUE; 62 } elseif ($_SERVER['SERVER_PORT'] == 443) { //其他 63 return TRUE; 64 } 65 return FALSE; 66 }
截图(截图某一秒)
1 /** 2 * description: 返回视频裁剪 选择秒的画面 3 * create by: 八月情 4 * create time: 2021-01-15 15:30 5 * environment: localhost 6 */ 7 public function actionLookoppic() 8 {12 $ffmpeg = FFMpeg::create(array( 13 'ffmpeg.binaries' => '/usr/bin/ffmpeg',//linux 安装ffmpeg的位置 可以通过 which ffmpeg 进行查看 14 'ffprobe.binaries' => '/usr//bin/ffprobe',//linux 安装ffprobe的位置 可以通过 which ffprobe 进行查看 15 'timeout' => 3600, // The timeout for the underlying process 16 'ffmpeg.threads' => 12, // The number of threads that FFMpeg should use 17 ), $logger); 18 19 $video = $ffmpeg->open('文件路径'); 20 21 $video_file = $model->base_url; 22 $ffprobe_prep = FFProbe::create([ 23 'ffmpeg.binaries' => '/usr/bin/ffmpeg',//linux 安装ffmpeg的位置 可以通过 which ffmpeg 进行查看 24 'ffprobe.binaries' => '/usr//bin/ffprobe',//linux 安装ffprobe的位置 可以通过 which ffprobe 进行查看 25 ]); 26 $first = $ffprobe_prep->streams($video_file)->videos()->first(); 27 $time = $first->get('duration', null);//获取视频长度 28 $start = $first->get('start', null);//接受视频的时间 29 $start_time = gmstrftime('%H:%M:%S', $start);//将长度转换为秒数 30 $frame = $video->frame(TimeCode::fromSeconds($start_time)); //提取第几秒的图像37 }
php-ffmpeg/php-ffmpeg 地址 composer require php-ffmpeg/php-ffmpeg
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具