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
相关文章:
北京建设网站制作公司,北京古代建筑博物馆预约官网?
IOS倒计时设置UIButton标题title的抖动问题
如何通过建站之星自助学习解决操作问题?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何在云主机快速搭建网站站点?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
c# 在ASP.NET Core中管理和取消后台任务
如何在景安云服务器上绑定域名并配置虚拟主机?
中山网站推广排名,中山信息港登录入口?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何在云主机上快速搭建网站?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
,有什么在线背英语单词效率比较高的网站?
如何做网站制作流程,*游戏网站怎么搭建?
javascript中的try catch异常捕获机制用法分析
再谈Python中的字符串与字符编码(推荐)
沈阳制作网站公司排名,沈阳装饰协会官方网站?
建站主机系统SEO优化与智能配置核心关键词操作指南
昆明网站制作哪家好,昆明公租房申请网上登录入口?
公众号网站制作网页,微信公众号怎么制作?
如何制作算命网站,怎么注册算命网站?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
宝塔新建站点报错如何解决?
制作网站的软件免费下载,免费制作app哪个平台好?
宁波自助建站系统如何快速打造专业企业网站?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
,怎么用自己头像做动态表情包?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
小程序网站制作需要准备什么资料,如何制作小程序?
建站主机如何选?性能与价格怎样平衡?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
Python路径拼接规范_跨平台处理说明【指导】
如何设置并定期更换建站之星安全管理员密码?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在Tomcat中配置并部署网站项目?
建站之星安装失败:服务器环境不兼容?
如何通过远程VPS快速搭建个人网站?
高防服务器租用指南:配置选择与快速部署攻略
为什么Go需要go mod文件_Go go mod文件作用说明
建站之星2.7模板快速切换与批量管理功能操作指南
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何在云指建站中生成FTP站点?
浅谈Javascript中的Label语句
如何选购建站域名与空间?自助平台全解析
代购小票制作网站有哪些,购物小票的简要说明?
,想在网上投简历,哪几个网站比较好?
*请认真填写需求信息,我们会在24小时内与您取得联系。