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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
Dec 16 PHP
用PHPdig打造属于你自己的Google[图文教程]
Feb 14 PHP
php与flash as3 socket通信传送文件实现代码
Aug 16 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
php冒泡排序与快速排序实例详解
Dec 07 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
May 05 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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实现的支持断点续传的文件下载类
2014/09/23 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
js图片处理示例代码
2014/05/12 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
会计自荐书
2013/12/02 职场文书
骨干教师培训制度
2014/01/13 职场文书
自荐信需注意事项
2014/01/25 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
团员个人年度总结
2015/02/26 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis
MySQL派生表联表查询实战过程
2022/03/20 MySQL