php中获得视频时间总长度的另一种方法


Posted in PHP onSeptember 15, 2011

当时获得视频长度是采用网上的通用的获得flv视频文件长度的方法,但是这个方法只对flv视频支持,其他格式的视频获取到的值就很差了,
下面在介绍一种:利用ffmpeg返回值Duration的方法,原来也想过用,但是没有解决,现在可以了,由于ffmpeg支持很多种格式的视频,所以这个具体一定的通用性。
ffmpeg获得视频时间长度的Duration的linux命令:
ffmpeg -i test.flv 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//
可以获得Duration;看下图
php中获得视频时间总长度的另一种方法

命令分析:

grep命令:匹配查找文件里符合条件的字符串,这里查找Duration字段

cut:以空格为分割符,查询第四个元素,cut是很好的切割命令

下面附几个cut的实例:

#ffmpeg -i test.flv

输入下面信息:

php中获得视频时间总长度的另一种方法

①获得creationdate:文件创建时间

ffmpeg -i test.flv 2>&1 | grep 'creationdate' | cut -d ' ' -f  5-

说明:Cut是文本截取命令:以空格作为分隔符,截取第5位以后的字段,

php中获得视频时间总长度的另一种方法

如果想要截取: 第5个元素和第8个元素,应该这样写:

ffmpeg -i test.flv 2>&1 | grep 'creationdate' | cut -d ' ' -f  5,8

②获得视频尺寸大小

使用cut截取以空格为分隔符的第十个元素也是视频尺寸

ffmpeg -i test.flv 2>&1 | grep 'Video' | cut -d ' ' -f 10 | sed s/,//

php中获得视频时间总长度的另一种方法

sed命令:sed ‘s/要替换的字符串/新字符串/g'

例如:sed s/,//:表示:用空白符替换','号
下面是利用获得视频缩略图和视频总长度时间的代码:

<?php 
/* 
* 获得视频文件的缩略图和视频长度 
*需要ffmpeg支持 
* @author PHP淮北 
* @date 2011-09-14 
* @copyright PHP淮北 
*/ 
//获得视频文件的总长度时间和创建时间 
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 
); 
} 
//获得视频文件的缩略图 
function getVideoCover($file,$time) { 
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 ".$videoCoverName."",$out,$status); 
if($status == 0)return $videoCoverName; 
elseif ($status == 1)return FALSE; 
} 
//调用方法 
$duration = getTime('/usr/local/apache/htdocs/test.flv'); 
echo $duration['vtime'].'<br/>';//总长度 
echo $duration['ctime'].'<br/>';//创建时间 
$videoCoverName = getVideoCover('/usr/local/apache/htdocs/test.flv', 6); 
echo $videoCoverName;//获得缩略图名称 
?>

测试效果

php中获得视频时间总长度的另一种方法

视频长度是:55秒43

视频创建时间;2011-9-13

视频缩略图:test.jpg

-----------------------------测试完全ok

补充:如果想获得视频文件的大小可以使用:

filesize()

filesize() 函数用于取得文件大小默认单位是:bytes,成功返回文件大小的字节数,否则返回 FALSE 。

PHP 相关文章推荐
一个用于网络的工具函数库
Oct 09 PHP
php cli 方式 在crotab中运行解决
Feb 08 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
PHP安全下载文件的方法
Apr 07 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
php探针不显示内存解决方法
Sep 17 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 #PHP
Sorting Array Values in PHP(数组排序)
Sep 15 #PHP
PHP 图片上传代码
Sep 13 #PHP
php中json_encode中文编码问题分析
Sep 13 #PHP
PHP pathinfo()获得文件的路径、名称等信息说明
Sep 13 #PHP
PHP获取MAC地址的函数代码
Sep 11 #PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 #PHP
You might like
MVC模式的PHP实现
2006/10/09 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
jcrop基本参数一览
2013/07/16 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
python list元素为tuple时的排序方法
2018/04/18 Python
python requests使用socks5的例子
2019/07/25 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
Python如何实现机器人聊天
2020/09/10 Python
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
教研处工作方案
2014/05/26 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL
python解析照片拍摄时间进行图片整理
2022/07/23 Python