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 生成饼图 三维饼图
Sep 28 PHP
PHP删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
设置php页面编码的两种方法示例介绍
Mar 03 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
浅谈php提交form表单
Jul 01 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
php实例化一个类的具体方法
Sep 19 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 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 中使用随机数的三个步骤
2006/10/09 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
php动态函数调用方法
2015/05/21 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
Python中django学习心得
2017/12/06 Python
python版飞机大战代码分享
2018/11/20 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
临床医学专业毕业生的自我评价
2013/10/17 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
如何写观后感
2015/06/19 职场文书
清明节主题班会
2015/08/14 职场文书
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电