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递归算法和应用方法介绍
Apr 15 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
php把大写命名转换成下划线分割命名
Apr 27 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
PHP加密解密函数详解
Oct 28 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 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中DOMElement操作xml文档实例演示
2013/03/26 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
AngularJS快速入门
2015/04/02 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
python解析xml模块封装代码
2014/02/07 Python
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
详解python中eval函数的作用
2019/10/22 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
Python try except else使用详解
2021/01/12 Python
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
公司领导推荐信
2013/11/12 职场文书
毕业生自我鉴定
2013/12/04 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
聘用合同范本
2015/09/21 职场文书