PHP使用FFmpeg获取视频播放总时长与码率等信息


Posted in PHP onSeptember 13, 2016

请注意:这篇文章中会用到passthru,可能部分虚拟主机会将此命令禁用。

代码如下:

PHP

<?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);
?>

总结

以上就是这篇文章的全部内容,希望对大家学习或使用PHP的时候能有所帮助。如果有疑问大家可以留言交流。

PHP 相关文章推荐
用PHP实现Ftp用户的在线管理的代码
Mar 06 PHP
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
PHP实现图片压缩的两则实例
Jul 19 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
详解json在php中的应用
Sep 30 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
php数组遍历类与用法示例
May 24 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
php微信公众平台开发之微信群发信息
Sep 13 #PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 #PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 #PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 #PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 #PHP
PHP入门教程之图像处理技巧分析
Sep 11 #PHP
PHP函数引用返回的实例详解
Sep 11 #PHP
You might like
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
python缩进区别分析
2014/02/15 Python
python实现网页链接提取的方法分享
2014/02/25 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
python下载微信公众号相关文章
2019/02/26 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
初中生学习生活的自我评价
2013/11/20 职场文书
运动会宣传口号
2014/06/09 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫