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中处理模拟rewrite 效果
Dec 09 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
CI(CodeIgniter)框架介绍
Jun 09 PHP
php实现根据url自动生成缩略图的方法
Sep 23 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
php实现的验证码文件类实例
Jun 18 PHP
php实现模拟post请求用法实例
Jul 11 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
PHP children()函数讲解
Feb 03 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设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
javascript学习网址备忘
2007/05/29 Javascript
div层的移动及性能优化
2010/11/16 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
JS重要知识点小结
2011/11/06 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
python中的字典使用分享
2016/07/31 Python
Python代码实现KNN算法
2017/12/20 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
简单了解Python3里的一些新特性
2019/07/13 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
学校募捐倡议书
2014/05/14 职场文书
工程负责人任命书
2014/06/06 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
婚礼父母答谢词
2015/01/04 职场文书