【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 | phpcomposer.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);
-- 展开阅读全文 --
    
            
        