`Laravel`版`小丑路人社区`改版中,与`Hyperf版小丑路人社区`数据互动,此版本改版中……尚未彻底完结!

Q:

安装ffmpeg,并通过ffmpeg获取视频第一帧做封面图

检测安装 yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

tar -zxvf yasm-1.3.0.tar.gz

cd yasm-1.3.0/

./configure

 make && make install

安装ffmpeg

下载ffmpeg压缩包,并解压

wget http://ffmpeg.org/releases/ffmpeg-4.3.1.tar.xz

tar xf ffmpeg-4.3.1.tar.xz

进入目录,设置安装目录并安装

cd ffmpeg-4.3.1/

./configure --prefix=/usr/local/ffmpeg

make && make install

配置ffmepg的环境变量

vi /etc/profile

输入 ‘i’  开始编辑

# 在最后添加PATH环境变量

export PATH="$PATH:/usr/local/ffmpeg/bin"

保存,并结束编辑

esc
# 输入
:wq

# 设置环境变量生效

source /etc/profile

查看ffmepg版本

ffmpeg -version

Demo:PHP获取视频的第一帧作为封面图

    // 文件命名规则:登录会员id-视频地址的md5加密
    $file_path = time() . ".jpg";
    get_cover_by_video('视频地址', '图片的绝对路径', $return_val);
    if ( $return_val != 0 ) { // 如果false,那么就是获取失败
        throw new Exception('视频封面获取失败,请重试');
    }

    if ( !function_exists('get_cover_by_video') ) {
        /**
         * 通过 ffmpeg 获取视频的第一帧,存储为图片
         *
         * @param  string  $video_path 视频地址
         * @param  string  $cover_file_path 图片存储地址
         * @param          $output 检测失败与成功:空数组则失败,0:成功
         */
        /**
         * @param  string  $video_path 视频地址
         * @param  string  $cover_file_path 图片存储地址
         * @param  null    $return_val 0.表示成功
         * @param  null    $output
         * @param  string  $ffmpeg_path ffmpeg的环境变量
         */
        function get_cover_by_video(string $video_path, string $cover_file_path, &$return_val = null, &$output = null, string $ffmpeg_path = '/usr/local/ffmpeg/bin/ffmpeg')
        {
            //  -s 286x160 是设置图片尺寸(放在  -f rawvideo 后面)
            //-L license
            //-h 帮助
            //-fromats 显示可用的格式,编解码的,协议的...
            //-f fmt 强迫采用格式fmt
            //-I filename 输入文件
            //-y 覆盖输出文件
            //-t duration 设置纪录时间 hh🇲🇲ss[.xxx]格式的记录时间也支持
            //-ss position 搜索到指定的时间 [-]hh🇲🇲ss[.xxx]的格式也支持
            //-title string 设置标题
            //-author string 设置作者
            //-copyright string 设置版权
            //-comment string 设置评论
            //-b bitrate 设置比特率,缺省200kb/s
            //-r fps 设置帧频 缺省25
            //-s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用:
            //Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
            //-aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
            //-croptop size 设置顶部切除带大小 像素单位
            //-cropbottom size –cropleft size –cropright size
            //-padtop size 设置顶部补齐的大小 像素单位
            //-padbottom size –padleft size –padright size –padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:兰排列,比如 000000代表黑色)
            //-vn 不做视频记录
            //-bt tolerance 设置视频码率容忍度kbit/s
            //-maxrate bitrate设置最大视频码率容忍度
            //-minrate bitreate 设置最小视频码率容忍度
            //-bufsize size 设置码率控制缓冲区大小
            //-vcodec codec 强制使用codec编解码方式。如果用copy表示原始编解码数据必须被拷贝。
            //-sameq 使用同样视频质量作为源(VBR)
            //-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率
            //-passlogfile file 选择两遍的纪录文件名为file
            $command = $ffmpeg_path . ' -v 0 -y -i "' . $video_path . '" -vframes 1 -ss 1 -vcodec mjpeg -f rawvideo -aspect 16:9 ' . $cover_file_path . ' ';

            exec($command, $output, $return_val);
        }
    }
技术分享
订阅

评论记录


评论/回复