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 Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
php中长文章分页显示实现代码
Sep 29 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
php构造函数与析构函数
Apr 23 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
PHP使用imagick扩展实现合并图像的方法
Apr 25 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 PHP
laravel5 Eloquent 实现事务方式
Oct 21 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
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Python中使用ElementTree解析XML示例
2015/06/02 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
Android笔试题总结
2014/11/29 面试题
中学生在校期间的自我评价分享
2013/11/13 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
优秀求职信
2014/05/29 职场文书
感恩教育月活动总结
2014/07/07 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书