查看: 34|回复: 0

[教程] PHP使用ffmpeg实现视频随机截图并转成图片

[复制链接]

0

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2011-7-20
发表于 昨天 17:25 | 显示全部楼层 |阅读模式

安装FFmpeg软件

在CentOS 7系统上安装FFmpeg需要添加第三方仓库并执行安装命令:

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

验证安装是否成功:

ffmpeg -version 

安装PHP扩展

通过Composer安装php-ffmpeg扩展:

composer require php-ffmpeg/php-ffmpeg 

检查并启用proc_open函数:

定位PHP配置文件路径:

php -i | grep 'php.ini' 

编辑php.ini文件,找到disable_functions配置项,删除proc_open和proc_get_status。重启PHP服务:

service php-fpm restart 

验证proc_open是否可用:

php -r "var_dump(function_exists('proc_open'));" 

实现视频截图功能

使用php-ffmpeg扩展从视频中随机截取一帧:

require 'vendor/autoload.php';
 
use FFMpeg\FFMpeg;
use FFMpeg\Coordinate\TimeCode;
 
$ffmpeg = FFMpeg::create();
$video = $ffmpeg->open('input.mp4');
 
$duration = $video->getFormat()->get('duration');
$randomTime = mt_rand(1, $duration - 1);
 
$frame = $video->frame(TimeCode::fromSeconds($randomTime));
$frame->save('random_screenshot.jpg');
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部