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 14 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
Server.HTMLEncode让代码在页面里显示为源代码
Dec 08 PHP
PHP常用数组函数介绍
Jul 28 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
PHP自带方法验证邮箱是否存在
Feb 01 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 PHP
PHP基于进程控制函数实现多线程
Dec 09 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 彩色文字实现代码
2009/06/29 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
用js计算页面执行时间的函数
2006/12/07 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python实现视频分帧效果
2019/05/31 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
详解python中的异常和文件读写
2021/01/03 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
洗煤厂厂长岗位职责
2014/01/03 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
通报表扬范文
2015/01/17 职场文书
恋恋笔记本观后感
2015/06/16 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers