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验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
php模拟socket一次连接,多次发送数据的实现代码
Jul 26 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
php比较两个绝对时间的大小
Jan 31 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
Jul 01 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
PHP实现linux命令tail -f
Feb 22 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
PHP封装的非对称加密RSA算法示例
May 28 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
php中namespace use用法实例分析
2016/01/22 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
python字典基本操作实例分析
2015/07/11 Python
Python入门学习之字符串与比较运算符
2015/10/12 Python
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
详解python中的Turtle函数库
2018/11/19 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
标准毕业生自荐信范文
2013/11/04 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
社区元宵节活动总结
2015/02/06 职场文书
商场收银员岗位职责
2015/04/07 职场文书
聚会通知怎么写
2015/04/23 职场文书
余世维讲座观后感
2015/06/11 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL