php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间


Posted in PHP onNovember 07, 2016

FFmpeg是一个视频插件,我们可以利用调用FFmpeg接口来获取视频的相关信息,包括视频的播放时长,视频的码率,视频的缩略图以及视频创建时间,本文章向大家介绍php如何使用FFmpeg接口获取视频信息,需要的朋友可以参考一下。

FFmpeg获得视频文件的缩略图:

function getVideoCover($file,$time,$name) {
   if(empty($time))$time = '1';//默认截取第一秒第一帧
   $strlen = strlen($file);
   // $videoCover = substr($file,0,$strlen-4);
   // $videoCoverName = $videoCover.'.jpg';//缩略图命名
   //exec("ffmpeg -i ".$file." -y -f mjpeg -ss ".$time." -t 0.001 -s 320x240 ".$name."",$out,$status);
   $str = "ffmpeg -i ".$file." -y -f mjpeg -ss 3 -t ".$time." -s 320x240 ".$name;
   //echo $str."</br>";
   $result = system($str);
   }

Fmpeg读取视频播放时长和码率

<?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);
?>

Fmpeg获得视频文件的总长度时间和创建时间

function getTime($file){
   $vtime = exec("ffmpeg -i ".$file." 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");//总长度
   $ctime = date("Y-m-d H:i:s",filectime($file));//创建时间
   //$duration = explode(":",$time);
   // $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//转化为秒
   return array('vtime'=>$vtime,
   'ctime'=>$ctime
   );
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
社区(php&amp;&amp;mysql)四
Oct 09 PHP
开源SNS系统-ThinkSNS
May 18 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
Jun 08 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
Jun 13 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
php操作access数据库的方法详解
Feb 22 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 #PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 #PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 #PHP
深入了解PHP中的Array数组和foreach
Nov 06 #PHP
PHP运行模式汇总
Nov 06 #PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 #PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 #PHP
You might like
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
js评分组件使用详解
2017/06/06 Javascript
jquery版轮播图效果和extend扩展
2017/07/18 jQuery
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
2020/11/19 Vue.js
python数字图像处理之高级滤波代码详解
2017/11/23 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
建筑工程毕业生自我鉴定
2014/01/14 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
目标管理责任书
2014/04/15 职场文书
基层党组织整改方案
2014/10/25 职场文书
维稳工作承诺书
2015/01/20 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
如何使用python包中的sched事件调度器
2022/04/30 Python