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 相关文章推荐
JAVA/JSP学习系列之七
Oct 09 PHP
PHP编程函数安全篇
Jan 08 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
php判断访问IP的方法
Jun 19 PHP
PHP session会话操作技巧小结
Sep 27 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
PHP strripos函数用法总结
Feb 11 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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
php5中类的学习
2008/03/28 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
JavaScript 学习笔记(五)
2009/12/31 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
python中xrange和range的区别
2014/05/13 Python
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
python如何读写json数据
2018/03/21 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
python中if及if-else如何使用
2020/06/02 Python
python实现经典排序算法的示例代码
2021/02/07 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
html5画布旋转效果示例
2014/01/27 HTML / CSS
厂区绿化方案
2014/05/08 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
代收款委托书范本
2014/10/01 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS