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 define函数的使用说明
Aug 27 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
深入apache host的配置详解
Jun 09 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
Jul 22 PHP
PHP基础知识介绍
Sep 17 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
php上传图片生成缩略图(GD库)
Jan 06 PHP
万能的php分页类
Jul 06 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 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下保存远程图片到本地的办法
2010/08/08 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
javascript之Partial Application学习
2013/01/10 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
django 多数据库配置教程
2018/05/30 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
你所在的项目是如何确定版本号的
2015/12/28 面试题
入党自我鉴定范文
2013/10/04 职场文书
个人自我鉴定写法
2013/11/30 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
小区停车场管理制度
2014/01/27 职场文书
协议书范本
2014/04/23 职场文书
争先创优心得体会
2014/09/12 职场文书
2014年督导工作总结
2014/11/19 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL