关于视频截取封面图

这里要说明,ffmpeg是一款软件,拓展调用软件的功能,代码实现截取对应帧数的图片.所以整个过程有3步,安装软件,安装拓展,代码调用.因为ffmpeg分windows和linux,下马就分别记录一下windows和linxu的安装使用过程

  1. windows下的安装和使用

    a. 安装软件,官方有下载地址: http://www.ffmpeg.org/download.html ,下载速度还可以

    image.png

    image.png

    image.png

    下载之后,解压出来.这两个文件的路径后面代码会调用

    image.png

    b. ffmpeg拓展安装,我比较懒,直接composer安装: composer require php-ffmpeg/php-ffmpeg

    image.png

    c. 代码调用

                $config = [

                    'ffmpeg.binaries'  => 'D:\phpstudy_pro\Extensions\ffmpeg\bin\ffmpeg.exe',    //为了方便调用,我将解压包移到了phpstudy里面,这里填写你的解压地址

                    'ffprobe.binaries' =>  'D:\phpstudy_pro\Extensions\ffmpeg\bin\ffprobe.exe'    //为了方便调用,我将解压包移到了phpstudy里面,这里填写你的解压地址

                ];

                $ffmpeg = \FFMpeg\FFMpeg::create($config);   //实例化ffmpeg对象

                $videoname = ROOT_PATH .'public/uploads/202004/07/1.mp4';   //视频地址,可用绝对地址和网络地址

                $video = $ffmpeg->open($videoname);

                $frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1));   //获取视频的第1帧作为封面

                $frame->save('radio.jpg');   //封面的保存地址,根据实际使用场景自定义

                print_r(getimagesize('radio.jpg'));    //获取图片属性,宽/高/大小

    d. 查看结果

    image.png

    image.png

  2. linux下的安装和使用

    a. 安装软件,官方有下载地址: http://www.ffmpeg.org/download.html 

    image.png

    左右两边应该都可以,不过建议下载最新的

    image.png

    我是在usr/local下安装 

    cd /usr/local

    wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz    //下载安装包

    xz -d ffmpeg-release-amd64-static.tar.xz      //初次解压

    tar -vxf ffmpeg-release-amd64-static.tar      //二次解压

    image.png

    cd ffmpeg-release-amd64-static  ,这两个文件的路径后面代码会调用

    image.png

    b. ffmpeg拓展安装,我比较懒,直接composer安装: composer require php-ffmpeg/php-ffmpeg

    image.png

    c. 代码调用,这里有个小坑,ffmpeg会使用php的proc_open函数,在php.ini里需要把这个禁用函数取消掉

                $config = [

                    'ffmpeg.binaries'  => '/usr/local/ffmpeg-4.2.2-amd64-static/ffmpeg',     //linux中软件的解压地址

                    'ffprobe.binaries' =>  '/usr/local/ffmpeg-4.2.2-amd64-static/ffprobe'     //linux中软件的解压地址

                ];

                $ffmpeg = \FFMpeg\FFMpeg::create($config);

                $videoname = ROOT_PATH .'public/uploads/202004/07/1.mp4';   //视频绝对地址或者网络地址

                $video = $ffmpeg->open($videoname);

                $frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1));   //获取视频的第一帧作为封面

                $frame->save('radio.jpg');   //保存地址

                print_r(getimagesize('radio.jpg'));    //获取图片属性,宽高

    d. 查看结果

    image.png

    至此,基本结束了,如果还有问题,欢迎留言探讨

发表评论

  1. :rolleyes: 良心博主写的这么仔细。nice