可可豆豆 發表於 2026-5-3 17:25:49

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">安装FFmpeg软件</a></li><li><a href="#_label1">安装PHP扩展</a></li><li><a href="#_label2">实现视频截图功能</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>安装FFmpeg软件</h2>
<p>在CentOS 7系统上安装FFmpeg需要添加第三方仓库并执行安装命令:</p>
<div class="jb51code"><pre class="brush:bash;">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</pre></div>
<p>验证安装是否成功:</p>
<div class="jb51code"><pre class="brush:bash;">ffmpeg -version </pre></div>
<p class="maodian"><a name="_label1"></a></p><h2>安装PHP扩展</h2>
<p>通过Composer安装php-ffmpeg扩展:</p>
<div class="jb51code"><pre class="brush:bash;">composer require php-ffmpeg/php-ffmpeg </pre></div>
<p>检查并启用proc_open函数:</p>
<p>定位PHP配置文件路径:</p>
<div class="jb51code"><pre class="brush:bash;">php -i | grep 'php.ini' </pre></div>
<p>编辑php.ini文件,找到disable_functions配置项,删除proc_open和proc_get_status。重启PHP服务:</p>
<div class="jb51code"><pre class="brush:bash;">service php-fpm restart </pre></div>
<p>验证proc_open是否可用:</p>
<div class="jb51code"><pre class="brush:bash;">php -r "var_dump(function_exists('proc_open'));" </pre></div>
<p class="maodian"><a name="_label2"></a></p><h2>实现视频截图功能</h2>
<p>使用php-ffmpeg扩展从视频中随机截取一帧:</p>
<div class="jb51code"><pre class="brush:php;">require 'vendor/autoload.php';

use FFMpeg\FFMpeg;
use FFMpeg\Coordinate\TimeCode;

$ffmpeg = FFMpeg::create();
$video = $ffmpeg-&gt;open('input.mp4');

$duration = $video-&gt;getFormat()-&gt;get('duration');
$randomTime = mt_rand(1, $duration - 1);

$frame = $video-&gt;frame(TimeCode::fromSeconds($randomTime));
$frame-&gt;save('random_screenshot.jpg');</pre></div>
頁: [1]
查看完整版本: PHP使用ffmpeg实现视频随机截图并转成图片