php如何利用ffmpeg获取视频第一帧为缩略图
作者:gusijin 时间:2024-05-03 15:48:20
php ffmpeg获取视频缩略图
1.环境
centos 7
ffmpeg version 2.8.15 Copyright
2.centos7安装ffmpeg
centos7安装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
【Ubuntu安装ffmpeg】
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
sudo apt-get update
sudo apt-get install ffmpeg
查看环境变量是否配置成功
ffmpeg -version
3.项目安装ffmpeg包
composer require php-ffmpeg/php-ffmpeg
github链接https://github.com/PHP-FFMpeg/PHP-FFMpeg
4.php代码
<?php
include '../vendor/autoload.php';
use FFMpeg\FFMpeg;
class MyFfmpeg
{
public function run()
{
$file_path = __DIR__ . '/' . uniqid() . '.jpg';
$ffmpeg = FFMpeg::create([
'ffmpeg.binaries' => '/usr/bin/ffmpeg',
'ffprobe.binaries' => '/usr/bin/ffprobe'
]);
$video = $ffmpeg->open('1.mp4');
$video->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds(1))->save($file_path);
}
}
$a = new MyFfmpeg();
$a->run();
附Fmpeg读取视频信息
<?php
define('FFMPEG_PATH', '/usr/local/ffmpeg2/bin/ffmpeg -i "%s" 2>&1');
function getVideoInfo($file) {
$command = sprintf(FFMPEG_PATH, $file);
ob_start();
passthru($command);
$info = ob_get_contents();
ob_end_clean();
$data = array();
if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/", $info, $match)) {
$data['duration'] = $match[1]; //播放时间
$arr_duration = explode(':', $match[1]);
$data['seconds'] = $arr_duration[0] * 3600 + $arr_duration[1] * 60 + $arr_duration[2]; //转换播放时间为秒数
$data['start'] = $match[2]; //开始时间
$data['bitrate'] = $match[3]; //码率(kb)
}
if (preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $info, $match)) {
$data['vcodec'] = $match[1]; //视频编码格式
$data['vformat'] = $match[2]; //视频格式
$data['resolution'] = $match[3]; //视频分辨率
$arr_resolution = explode('x', $match[3]);
$data['width'] = $arr_resolution[0];
$data['height'] = $arr_resolution[1];
}
if (preg_match("/Audio: (\w*), (\d*) Hz/", $info, $match)) {
$data['acodec'] = $match[1]; //音频编码
$data['asamplerate'] = $match[2]; //音频采样频率
}
if (isset($data['seconds']) && isset($data['start'])) {
$data['play_time'] = $data['seconds'] + $data['start']; //实际播放时间
}
$data['size'] = filesize($file); //文件大小
return $data;
}
//用法
$video_info = getVideoInfo('video.mp4');
print_r($video_info);
?>
来源:https://blog.csdn.net/gusijin/article/details/122712551
标签:ffmpeg,视频,缩略图
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
pygame学习笔记(3):运动速率、时间、事件、文字
2023-05-20 21:19:38
![](https://img.aspxhome.com/file/2023/8/89238_0s.jpg)
Firebug 必须掌握的技巧
2009-12-21 20:04:00
![](https://img.aspxhome.com/file/UploadPic/20101/11/01-66s.jpg)
SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)
2024-01-23 00:15:03
![](https://img.aspxhome.com/file/2023/4/113554_0s.png)
使用python实现抓取中国银行外汇牌价首页数据实现
2021-11-28 02:05:49
![](https://img.aspxhome.com/file/2023/9/128749_0s.jpg)
Symfony2框架创建项目与模板设置实例详解
2023-11-20 23:36:39
![](https://img.aspxhome.com/file/2023/9/92809_0s.jpg)
解决python 虚拟环境删除包无法加载的问题
2023-09-15 14:43:57
用 iframe 解决下拉框与层之冲突
2008-04-28 12:24:00
![](https://img.aspxhome.com/file/UploadPic/20071/2007131102430882s.gif)
python如何基于redis实现ip代理池
2022-11-05 20:49:08
phpmyadmin 数据导入导出问题
2007-08-06 15:23:00
解决python中的幂函数、指数函数问题
2021-12-03 01:26:00
一篇文章带你了解kali局域网攻击
2022-02-21 23:53:35
![](https://img.aspxhome.com/file/2023/6/107996_0s.jpg)
Python将string转换到float的实例方法
2023-06-13 07:23:47
![](https://img.aspxhome.com/file/2023/5/59465_0s.png)
Python实现子类调用父类的方法
2023-09-28 12:00:55
PHP和NodeJs开发的应用如何共用Session
2024-06-05 09:43:22
php实现比较全的数据库操作类
2023-11-22 02:15:10
浅谈pandas关于查看库或依赖库版本的API原理
2023-10-14 04:54:13
![](https://img.aspxhome.com/file/2023/9/107659_0s.png)
MySQL数据库Shell import_table数据导入
2024-01-15 02:34:55
![](https://img.aspxhome.com/file/2023/0/104440_0s.png)
如何用python处理excel表格
2021-04-21 04:06:55
python使用matplotlib绘图时图例显示问题的解决
2022-11-13 16:59:47
![](https://img.aspxhome.com/file/2023/8/62898_0s.jpg)
linux下安装python3和对应的pip环境教程详解
2023-03-17 09:48:15
![](https://img.aspxhome.com/file/2023/7/95787_0s.png)