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 相关文章推荐
PHP 读取和编写 XML
Nov 19 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
php计算给定日期所在周的开始日期和结束日期示例
Feb 06 PHP
老生常谈PHP面向对象之标识映射
Jun 21 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
php通过各种函数判断0和空
Jul 04 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
浅谈如何提高PHP代码的质量
May 28 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
简单实用的.net DataTable导出Execl
2013/10/28 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
vue 引入公共css文件的简单方法(推荐)
2018/01/20 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
浅谈MySQL中的触发器
2015/05/05 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
共产党员公开承诺书
2014/03/25 职场文书
推荐信格式范文
2014/05/09 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
五年级数学教学反思
2016/02/16 职场文书
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript