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 05 PHP
php ZipArchive压缩函数详解实例
Nov 06 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
php中动态修改ini配置
Oct 14 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 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笔试题
2009/08/04 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
学习PHP session的传递方式
2016/06/15 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
JavaScript知识点整理
2015/12/09 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
angularjs路由传值$routeParams详解
2020/09/05 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
python脚本爬取字体文件的实现方法
2017/04/29 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
Python 输出详细的异常信息(traceback)方式
2020/04/08 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
不用游标的SQL语句有哪些
2012/09/07 面试题
最新销售员个人自荐信
2013/09/21 职场文书
绩效工资分配方案
2014/01/18 职场文书
医德医魂心得体会
2014/09/11 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
redis数据结构之压缩列表
2022/03/21 Redis