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模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
php自动适应范围的分页代码
Aug 05 PHP
PHP 加密解密内部算法
Apr 22 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
开源php中文分词系统SCWS安装和使用实例
Apr 11 PHP
访问编码后的中文URL返回404错误的解决方法
Aug 20 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
Aug 28 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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学习之 循环结构实现代码
2011/06/09 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
Enter转换为Tab的小例子(兼容IE,Firefox)
2013/11/14 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
在Python中使用dict和set方法的教程
2015/04/27 Python
常见的python正则用法实例讲解
2016/06/21 Python
python 判断网络连通的实现方法
2018/04/22 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
纬创Java面试题笔试题
2014/10/02 面试题
最新销售员个人自荐信
2013/09/21 职场文书
甜点店创业计划书
2014/01/27 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
医院科室评语
2015/01/04 职场文书
董事长岗位职责
2015/02/13 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
frg-100简单操作(设置)说明
2022/04/05 无线电
Python图像处理库PIL详细使用说明
2022/04/06 Python