从视频文件生成预览图像?

2022-08-30 10:24:10

在 PHP 中给定视频文件 (, ) 有没有办法生成缩略图预览?.mov.mp4


答案 1

解决方案#1(旧版)(不推荐)

首先安装项目(http://ffmpeg-php.sourceforge.net/ffmpeg-php)

然后你可以使用这个简单的代码:

<?php
$frame = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';

$mov = new ffmpeg_movie($movie);
$frame = $mov->getFrame($frame);
if ($frame) {
    $gd_image = $frame->toGDImage();
    if ($gd_image) {
        imagepng($gd_image, $thumbnail);
        imagedestroy($gd_image);
        echo '<img src="'.$thumbnail.'">';
    }
}
?>

描述:这个项目使用二进制扩展文件,它非常旧,上次更新是在2008年。因此,可能不适用于较新版本的 或 ..soFFMpegPHP


解决方案#2(2018年更新)(推荐)

首先安装项目(https://github.com/PHP-FFMpeg/PHP-FFMpeg
(只需运行安装:composer需要php-ffmpeg/php-ffmpegPHP-FFMpeg

然后你可以使用这个简单的代码:

<?php
require 'vendor/autoload.php';

$sec = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';

$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open($movie);
$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds($sec));
$frame->save($thumbnail);
echo '<img src="'.$thumbnail.'">';

描述:它是更新,更现代的项目,可与最新版本的 和 .请注意,PHP 功能需要它。FFMpegPHPproc_open()


答案 2

我想到了两种方法:

  • 使用像流行的ffmpeg这样的命令行工具,但是您几乎总是需要自己的服务器(或非常好的服务器管理员/托管公司)才能获得它

  • 使用LongTail Video播放器的“screenshoot”插件,该插件允许创建手动屏幕截图,然后将其发送到服务器端脚本。


推荐