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 工厂模式使用方法
May 18 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
基于Zend的Captcha机制的应用
May 02 PHP
PHP之短标签开启设置
Jun 17 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
Symfony核心类概述
Mar 17 PHP
PHP实现添加购物车功能
Mar 06 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
Dec 18 PHP
PHP实现简单登录界面
Oct 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
关于IIS php调用com组件的权限问题
2012/01/11 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
Jquery 基础学习笔记
2009/05/29 Javascript
Javascript常考语句107条收集
2010/03/09 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
QA工程师岗位职责
2013/11/20 职场文书
毕业自荐信
2013/12/16 职场文书
心理健康教育制度
2014/01/27 职场文书
九年级数学教学反思
2014/02/02 职场文书
精彩广告词大全
2014/03/19 职场文书
家教广告词
2014/03/19 职场文书
优秀员工演讲稿
2014/05/19 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
2014年变电站工作总结
2014/12/19 职场文书
运动会广播稿200字
2015/08/19 职场文书
心理健康教育培训研修感言
2015/11/18 职场文书
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python