php 调用ffmpeg获取视频信息的简单实现
发布时间 - 2026-01-11 00:29:52 点击率:次ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,包含了libavcodec,保证高可移值性和编解码质量。

本文将介绍使用php调用ffmpeg获取视频信息,调用ffmpeg首先需要服务器上安装了ffmpeg,安装方法很简单,可自行搜索。
代码如下:
<?php
// 定义ffmpeg路径及命令常量
define('FFMPEG_CMD', '/usr/local/bin/ffmpeg -i "%s" 2>&1');
/**
* 使用ffmpeg获取视频信息
* @param String $file 视频文件
* @return Array
*/
function getVideoInfo($file){
ob_start();
passthru(sprintf(FFMPEG_CMD, $file));
$video_info = ob_get_contents();
ob_end_clean();
// 使用输出缓冲,获取ffmpeg所有输出内容
$ret = array();
// Duration: 00:33:42.64, start: 0.000000, bitrate: 152 kb/s
if (preg_match("/Duration: (.*?), start: (.*?), bitrate: (\d*) kb\/s/", $video_info, $matches)){
$ret['duration'] = $matches[1]; // 视频长度
$duration = explode(':', $matches[1]);
$ret['seconds'] = $duration[0]*3600 + $duration[1]*60 + $duration[2]; // 转为秒数
$ret['start'] = $matches[2]; // 开始时间
$ret['bitrate'] = $matches[3]; // bitrate 码率 单位kb
}
// Stream #0:1: Video: rv20 (RV20 / 0x30325652), yuv420p, 352x288, 117 kb/s, 15 fps, 15 tbr, 1k tbn, 1k tbc
if(preg_match("/Video: (.*?), (.*?), (.*?)[,\s]/", $video_info, $matches)){
$ret['vcodec'] = $matches[1]; // 编码格式
$ret['vformat'] = $matches[2]; // 视频格式
$ret['resolution'] = $matches[3]; // 分辨率
list($width, $height) = explode('x', $matches[3]);
$ret['width'] = $width;
$ret['height'] = $height;
}
// Stream #0:0: Audio: cook (cook / 0x6B6F6F63), 22050 Hz, stereo, fltp, 32 kb/s
if(preg_match("/Audio: (.*), (\d*) Hz/", $video_info, $matches)){
$ret['acodec'] = $matches[1]; // 音频编码
$ret['asamplerate'] = $matches[2]; // 音频采样频率
}
if(isset($ret['seconds']) && isset($ret['start'])){
$ret['play_time'] = $ret['seconds'] + $ret['start']; // 实际播放时间
}
$ret['size'] = filesize($file); // 视频文件大小
$video_info = iconv('gbk','utf8', $video_info);
return array($ret, $video_info);
}
// 输出视频信息
$video_info = getVideoInfo('myvideo.avi');
print_r($video_info[0]);
?>
输出:
Array ( [duration] => 00:33:42.64 [seconds] => 2025.64 [start] => 0.000000 [bitrate] => 152 [vcodec] => rv20 (RV20 / 0x30325652) [vformat] => yuv420p [resolution] => 352x288 [width] => 352 [height] => 288 [acodec] => cook (cook / 0x6B6F6F63) [asamplerate] => 22050 [play_time] => 2025.64 [size] => 38630744 )
以上这篇php 调用ffmpeg获取视频信息的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# php
# 调用ffmpeg
# PHP中使用FFMPEG获取视频缩略图和视频总时长实例
# PHP使用FFmpeg获取视频播放总时长与码率等信息
# 利用Ffmpeg获得flv视频缩略图和视频时间的代码
# php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
# php使用ffmpeg获取视频信息并截图的实现方法
# PHP基于ffmpeg实现转换视频
# 截图及生成缩略图的方法
# php利用ffmpeg提取视频中音频与视频画面的方法详解
# php使用ffmpeg向视频中添加文字字幕的实现方法
# php+ffmpeg如何获取视频缩略图、视频分辨率等相关信息
# 给大家
# 将其
# 希望能
# 很简单
# 这篇
# 转化为
# 并能
# 视频文件
# 小编
# 开源
# 大家多多
# 可以用来
# 播放时间
# 器上
# 编解码
# 包含了
# 安装了
# 是一套
# function
# getVideoInfo
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Linux系统命令中screen命令详解
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
EditPlus中的正则表达式 实战(2)
WEB开发之注册页面验证码倒计时代码的实现
使用spring连接及操作mongodb3.0实例
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Laravel如何处理文件下载请求?(Response示例)
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
EditPlus中的正则表达式实战(5)
JavaScript如何实现类型判断_typeof和instanceof有什么区别
公司门户网站制作流程,华为官网怎么做?
制作旅游网站html,怎样注册旅游网站?
实例解析Array和String方法
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何在云虚拟主机上快速搭建个人网站?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Laravel Session怎么存储_Laravel Session驱动配置详解
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何在橙子建站中快速调整背景颜色?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
BootStrap整体框架之基础布局组件
利用python获取某年中每个月的第一天和最后一天
北京专业网站制作设计师招聘,北京白云观官方网站?
jQuery 常见小例汇总
油猴 教程,油猴搜脚本为什么会网页无法显示?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
专业商城网站制作公司有哪些,pi商城官网是哪个?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Android 常见的图片加载框架详细介绍
昵图网官网入口 昵图网素材平台官方入口
如何快速搭建高效香港服务器网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何在新浪SAE免费搭建个人博客?
如何在阿里云香港服务器快速搭建网站?
教你用AI润色文章,让你的文字表达更专业
如何实现javascript表单验证_正则表达式有哪些实用技巧
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel怎么判断请求类型_Laravel Request isMethod用法
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法

