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制作的意见反馈表源码
Mar 11 PHP
PHP中PDO的错误处理
Sep 04 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
Smarty模板变量调节器用法分析
May 23 PHP
PHP数组实例详解
Jun 26 PHP
简单的自定义php模板引擎
Aug 26 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
php使用CutyCapt实现网页截图保存的方法
Oct 03 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
laravel http 自定义公共验证和响应的方法
Sep 29 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 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
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
destoon整合UCenter图文教程
2014/06/21 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
node.js中的path.extname方法使用说明
2014/12/09 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python 文件与目录操作
2008/12/24 Python
Python金融数据可视化汇总
2017/11/17 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
2013年高中生自我评价
2013/10/23 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
关于青春的演讲稿
2014/05/05 职场文书
心理学专业求职信
2014/06/16 职场文书
初中体育教学随笔
2015/08/15 职场文书
关于感恩的作文
2019/08/26 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
python多次执行绘制条形图
2022/04/20 Python