tp6+FFMpeg实现视频水印及大小剪切

之前项目中用到上传视频时,需要获取视频大小,视频第一帧及给视频添加水印问题,找了很多资料,结合在项目中的实际运用,在此记录一下。

1.FFMpeg安装

  1. 下载扩展

    网上可以找到,我这里放到百度云盘 链接:百度云盘下载 提取码:t5zz

  2. composer 安装php-ffmpeg

    github上安装 php-ffmpeg

注意:以上不是二选一,是两者都需要哦

1# composer 安装 2composer require php-ffmpeg/php-ffmpeg

2.获取上传文件大小和时长

1# ffmpeg和ffprobe为上面下载的扩展在你项目中的路径 2$file = '你上传的视频路径'; 3$ffprobe = \FFMpeg\FFProbe::create([ 4 'ffmpeg.binaries' => '/usr/bin/ffmpeg', # 你自己安装的位置 5 'ffprobe.binaries' => '/usr/bin/ffprobe' # 你自己安装的位置 6 ]); 7 # 获取视频时长 8 $video_time = $ffprobe->format($file)->get('duration',0)/60; 9 # 获取视频大小(单位可能不准确) 10 $video_size = $ffprobe->format($file)->get('size',0)/1000000;

3.视频提取第几帧做缩略图

1$ffmpeg = \FFMpeg\FFMpeg::create([ 2 'ffmpeg.binaries' => '/usr/bin/ffmpeg', # 你自己安装的位置 3 'ffprobe.binaries' => '/usr/bin/ffprobe' # 你自己安装的位置 4]); 5$video = $ffmpeg->open($url_video); 6$frame = $video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1)); # 提取第1秒的图像 7$url_image = "static/".md5(uniqid().rand(1,999)).'.png'; # 生成图片路径 8$frame->save($url_image); # 保存图片 9dump($url_image);die; # 获取视频截取的图片

4.视频添加水印

1$ffmpeg = \FFMpeg\FFMpeg::create([ 2 'ffmpeg.binaries' => '/usr/bin/ffmpeg', # 你自己安装的位置 3 'ffprobe.binaries' => '/usr/bin/ffprobe' # 你自己安装的位置 4]); 5# $video_url 为视频路径 6$video = $ffmpeg->open($video_url); 7$watermarkPath = 'static/images/sy.gif'; # 水印图片 8$sy_url_video = "static/".md5(uniqid().rand(1,999)).'.mp4'; # 新生成的待水印视频名称 9$video->filters()->watermark($watermarkPath, array( 10 'position' => 'relative',# 视频定位 11 'top' => -20, 12 'left' => -5, 13)); 14$video->save(new \FFMpeg\Format\Video\X264('libfdk_aac'), $sy_url_video); # 保存视频 15dump($sy_url_video);die; # 得出带水印的视频

到此,完整的php操作ffmpeg就完成了,今天先这里,后期有机会,补全其他功能。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )