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 ss7.5的数据调用 (笔记)
Mar 08 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
PHP输出日历表代码实例
Mar 27 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 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 park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
初识JQuery 实例一(first)
2011/03/16 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
Vue实现push数组并删除的例子
2019/11/01 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
浅谈Python的异常处理
2016/06/19 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
Python tkinter模版代码实例
2020/02/05 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
上班玩游戏检讨书
2014/02/07 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
违纪学生保证书
2015/02/27 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang
python 如何做一个识别率百分百的OCR
2021/05/29 Python
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB