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 session有效期问题
Apr 26 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
PHP新手入门学习方法
May 08 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
php while循环控制的简单实例
May 30 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
PHP http请求超时问题解决方案
Nov 13 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 在文件指定行插入数据的代码
2010/05/08 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
python实现倒计时的示例
2014/02/14 Python
Python中的类学习笔记
2014/09/23 Python
Python的面向对象思想分析
2015/01/14 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
python队列原理及实现方法示例
2019/11/27 Python
职业生涯规划书基本格式
2014/01/06 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
詹天佑教学反思
2014/04/30 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
详解Redis复制原理
2021/06/04 Redis
vscode中使用npm安装babel的方法
2021/08/02 Javascript