PHP TP5 利用ffmpeg进行视频截图

1 篇文章 0 订阅
1 篇文章 0 订阅

PHP利用ffmpeg进行视频截图(Linux)

最近在做项目的过程中遇到这个业务 , 用户上传的视频需要有一个封面图来展示 , 但是之前没有搞过这个东西 , 所以写完之后来记录一下.

我是用的TP5的框架+PHP7.2的环境 , 第一次用有些参数我还没有仔细看 , 先把功能实现再说 /手动狗头保命 写的不好大家轻点喷我 哈哈

Linux 环境

一.安装ffmpeg

下载地址 https://johnvansickle.com/ffmpeg/

1.选中对应版本的下载地址使用 wget 命令进行下载

wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz

我选择的版本是第一个 , 可以根据自己的实际情况进行选择.

2. 解压

xz -d ffmpeg-git-amd64-static.tar.xz

经过一次解压,.xz 后缀名已经被去掉。接下来执行:

tar -xvf ffmpeg-git-amd64-static.tar


解压完成后进入解压出来的这个目录ffmpeg-git-20190424-amd64-static/:

这里因为这个文件的名字太长了  我就修改成了ffmpeg

ffmpeg 和 ffprobe 都在这里。

3.运行

./ffmpeg  用这个命令试一下 像下图这种情况就证明一件安装成功了

二.PHP代码

简单说明一下情况 , 上代码.
在视频截图的执行过程中会用到system和exec这两个函数 , 但是正常情况下这两个函数是出于被禁用的状态 , 个人建议使用第一个函数 .
(说明:exec()是用于执行shell命令的函数。)

//获取文件包信息  
$filesdata = $this->request->file('files');
//获取文件详情
$filedata = $filesdata->getInfo();
//我这里用的是上传文件产生的临时文件作为源文件地址
$url = $filedata['tmp_name'];
//简单做一下处理获取当前上传文件名,不需要后缀,用来做生成截图的名称
$videoname = explode('.',$filedata['name']);
//设置生成文件的地址和文件名称
$newname = '/www/wwwroot/aaa/runtime/image/'.$videoname[0].'.jpg';
//最主要的就是 -ss这个参数  是从哪个时间点开始截图 其他照搬就可以
$str = "/www/server/php/ffmpeg/ffmpeg -i $url  -ss 1 -vframes 1 $newname";
//以下两种方法都可以实现,亲测有效
// exec($str);
system($str);

我这边的逻辑是拿到截图后进行压缩 , 然后上传云服务器 , 所有后边的代码就不贴出来了.
到这里PHP利用ffmpeg截图的代码就结束了, 其实很简单 , 大部分都是在做PHP的处理 , 只需要设定好参数调用就可以

感谢观看!!! 哪里有不足的地方请大家多多指教

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值