php FFmpeg插件dome

前端使用vue 该文件改于 https://juejin.im/post/5b6960d8e51d4519115d5d2f 提供的vue页面

修改后的 地址 https://github.com/August-the-feel/FFmpeg.git

修改内容 : 进行 http 请求页面 使用php-FFmpeg插件进行裁剪 截图

 

裁剪

 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 = Yii::$app->request->get('startTime', null);//开始时间
16     $end = Yii::$app->request->get('endTime', null);//结束时间
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;
22     // dd($shell);
23     shell_exec($shell);
24     $attachment = new Attachment;
25     $attachment->base_url=$hosturl.$fileurl;
26     $attachment->merchant_id=$model->merchant_id;
27     $attachment->drive=$model->drive;
28     $attachment->upload_type=$model->upload_type;
29     $attachment->specific_type=$model->specific_type;
30     $attachment->path=$model->path;
31     $attachment->name=$model->name;
32     $attachment->type=$model->type;
33     $attachment->reporter_id=$model->reporter_id;
34     $attachment->extension=$model->extension;
35     $attachment->year=date('Y');
36     $attachment->month=date('m');
37     $attachment->day=date('d');
38     $attachment->width=$model->width;
39     $attachment->height=$model->height;
40     $attachment->upload_ip=$model->upload_ip;
41     $attachment->status=$model->status;
42     $attachment->created_at=$model->created_at;
43     $attachment->updated_at=$model->updated_at;
44     $attachment->size=filesize($_SERVER['DOCUMENT_ROOT'].$fileurl);
45     // dd($attachment);
46     $sign=$attachment->save();
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     }

 

实测可以用 具体内容根据自己的需求修改 该文章仅提供参考  

Linux安装FFmpeg插件 查看 https://www.cnblogs.com/ForAll-I-Care/p/14428358.html

php-ffmpeg/php-ffmpeg 地址 composer require php-ffmpeg/php-ffmpeg

 

 

上一篇:文件下载 响应头获取中文名称乱码问题解决方法


下一篇:IOS之——快速获取苹果设备UDID(插曲)