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版自动生成文章摘要
Jul 23 PHP
php Memcache 中实现消息队列
Nov 24 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
Apr 26 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
php实现计数器方法小结
Jan 05 PHP
php检索或者复制远程文件的方法
Mar 13 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
PHP Yaf框架的简单安装使用教程(推荐)
Jun 08 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
Aug 10 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
Aug 02 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
apache rewrite_module模块使用教程
2008/01/10 PHP
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
php实现微信扫码支付
2017/03/26 PHP
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
javascript实现别踩白块儿小游戏程序
2015/11/22 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
2015/12/08 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
javascript编写简易计算器
2017/05/06 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python中针对函数处理的特殊方法
2014/03/06 Python
详解Python中的__init__和__new__
2014/03/12 Python
python中Genarator函数用法分析
2015/04/08 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
python实现网站微信登录的示例代码
2019/09/18 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
DNA测试:Orig3n
2019/03/01 全球购物