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性能测试工具xhprof的详解
Jun 03 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 PHP
php中创建和调用webservice接口示例
Jul 25 PHP
php实现递归与无限分类的方法
Feb 16 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
php cookie用户登录的详解及实例代码
Jan 03 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
PHP实现的购物车类实例
2015/06/17 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
php数组指针操作详解
2017/02/14 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
各营销点岗位职责范本
2014/03/05 职场文书
仓库文员岗位职责
2014/04/06 职场文书
节约用电标语
2014/06/17 职场文书
八项规定整改方案
2014/10/01 职场文书
信仰观后感
2015/06/03 职场文书
高一英语教学反思
2016/03/03 职场文书
Python Parser的用法
2021/05/12 Python
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers