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 相关文章推荐
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
PHP学习笔记之二
Jan 17 PHP
理解php Hash函数,增强密码安全
Feb 25 PHP
Yii实现自动加载类地图的方法
Apr 01 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
深入分析PHP优化及注意事项
Jul 04 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
PHP数据库处理封装类实例
Dec 24 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
PHP实现的抓取小说网站内容功能示例
Jun 27 PHP
PHP常用header头定义代码示例汇总
Aug 29 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
php实现多张图片上传加水印技巧
2013/04/18 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
Python入门篇之条件、循环
2014/10/17 Python
神经网络理论基础及Python实现详解
2017/12/15 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
Python 获取项目根路径的代码
2019/09/27 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
Python 多进程、多线程效率对比
2020/11/19 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
班组长安全职责
2014/01/05 职场文书
中英文求职信范文
2014/01/27 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
体育专业自荐书
2014/05/29 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript