【thinkphp】tp6/tp5.1获取视频第一帧生成图片并保存下来
在实现具体功能的php代码之前,我们需要先了解一个组件库,ffmpeg-php
首先php本身是无法获取视频和音频文件的信息,需要通过这个ffmpeg组件库调用php底层的程序来获取
下面开始安装ffmpeg-php到thinkphp项目中!
一.使用Composer安装ffmpeg-php
1. 使用shell客户端下载
composer.phar到项目中,
$ wget https://raw.githubusercontent.com/composer/getcomposer.org/1b137f8bf6db3e79a38a5bc45324414a6b1f9df2/web/installer -O - -q | php
composer.phar 的文件在项目运行目录下
composer.json
{ "require": { "char0n/ffmpeg-php": "^3.0.0" } }
如果已有composer.json文件,将 "char0n/ffmpeg-php": "^3.0.0" 复制填写到 require 列表中即可
{ "require": { "php": ">=7.2.5", "topthink/framework": "^6.0.0", "topthink/think-orm": "^2.0", "topthink/think-multi-app": "^1.0", "topthink/think-view": "^1.0", "liliuwei/thinkphp-jump": "^1.5", "topthink/think-captcha": "^3.0", "aliyuncs/oss-sdk-php": "^2.4", "phpoffice/phpexcel": "^1.8", "phpoffice/common": "^1.0", "char0n/ffmpeg-php": "^3.0.0" } }
php composer.phar install
或
composer update
vendor/
*.*
- composer.json
- composer.phar
- vendor/
安装成功后在vendor/目录下会有一个名称为char0n的目录,至此FFmpegPHP安装完成!
二.使用yum安装rpm和ffmpeg
centos7使用如下命令安装
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm sudo yum install ffmpeg ffmpeg-devel -y
Ubuntu使用如下命令安装
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update sudo apt-get install ffmpeg
命令执行完成后,在使用如下命令查看版本,可知晓是否已成功!
ffmpeg -version
如出现以下类似信息,说明已安装成功!
接下来,可以开始使用它,获取到视频的第一帧图片并保存下来!
三.使用ffmpeg-php获取视频的第一帧图片
代码很简单,只需要调用Movie类实例,使用getFrame方法即可
<?php use Char0n\FFMpegPHP\Movie; //使用原生方式获取到上传的文件 //$image_temp = $_FILES['file']['tmp_name']; //或者使用thinkphp获取也可以 $key = 'file'; $file = request()->file($key); $fileInfo = $file->getInfo(); $image_temp = $fileInfo['tmp_name']; //把视频文件的第一帧保存下来 $movie = new Movie($image_temp); //获取第一帧图片 $frame_image = $movie->getFrame(1); //转Gd $im = $frame_image->toGDImage(); $filename = __DIR__ . DS . 'frame_' . time() . '.png'; //保存到临时文件 imagepng($im, $filename); // 保存文件代码 //删除临时文件 //unlink($filename);
-- 展开阅读全文 --