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实现文件安全下载
Oct 09 PHP
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
Jan 10 PHP
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
PHP自动重命名文件实现方法
Nov 04 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
PHP大文件及断点续传下载实现代码
Aug 18 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版(1)
2006/10/09 PHP
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
深入php数据采集的详解
2013/06/02 PHP
PHP可变函数学习小结
2015/11/29 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
13个PHP函数超实用
2015/10/21 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
JS实现移动端在线签协议功能
2019/08/22 Javascript
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
大学生求职工作的自我评价
2014/02/13 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
团员个人总结
2015/02/26 职场文书
辩护词格式
2015/05/22 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers