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入门
Oct 09 PHP
php 生成WML页面方法详解
Aug 09 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
Dec 16 PHP
php数组生成html下拉列表的方法
Jul 20 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
Mar 15 PHP
php 指定范围内多个随机数代码实例
Jul 18 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
数据结构之利用PHP实现二分搜索树
Oct 25 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 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之数据库操作详解及乱码解决!
2007/01/02 PHP
PHP学习资料汇总与网址
2007/03/16 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
PHP类的特性实例分析
2016/09/28 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
一个用js实现的页内搜索代码
2007/05/23 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
Python创建字典的八种方式
2019/02/27 Python
Python初学者常见错误详解
2019/07/02 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
J2EE的优越性主要表现在哪些方面
2016/03/28 面试题
机关出纳岗位职责
2014/04/03 职场文书
一分钟演讲稿
2014/04/30 职场文书
2016年元旦主持词
2015/07/06 职场文书
创业计划书介绍
2019/04/24 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js
java开发双人五子棋游戏
2022/05/06 Java/Android