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设计模式 FlyWeight (享元模式)
Jun 26 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
Nov 16 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
如何使用php生成zip压缩包
Apr 21 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
漂亮但不安全的CTB
2006/10/09 PHP
基于mysql的bbs设计(三)
2006/10/09 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
解决Python requests 报错方法集锦
2017/03/19 Python
Python实现的科学计算器功能示例
2017/08/04 Python
实例讲解python中的序列化知识点
2018/10/08 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
车间班组长的职责
2013/12/13 职场文书
小区门卫值班制度
2014/01/24 职场文书
党员身份证明材料
2015/06/19 职场文书
大学同学聚会感言
2015/07/30 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
Python 循环读取数据内存不足的解决方案
2021/05/25 Python