php中获得视频时间总长度的另一种方法
当时获得视频长度是采用网上的通用的获得flv视频文件长度的方法,但是这个方法只对flv视频支持,其他格式的视频获取到的值就很差了, 命令分析: grep命令:匹配查找文件里符合条件的字符串,这里查找Duration字段cut:以空格为分割符,查询第四个元素,cut是很好的切割命令下面附几个cut的实例: #ffmpeg -i test.flv 输入下面信息: 文件创建时间 ffmpeg -i test.flv 2>&1 | grep 'creationdate' | cut -d ' ' -f 5- 说明:Cut是文本截取命令:以空格作为分隔符,截取第5位以后的字段, 如果想要截取: 第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/,// sed命令:sed ‘s/要替换的字符串/新字符串/g'例如:sed s/,//:表示:用空白符替换','号 代码如下: /* * 获得视频文件的缩略图和视频长度 *需要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,$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'].' ';//总长度 echo $duration['ctime'].' ';//创建时间 $videoCoverName = getVideoCover('/usr/local/apache/htdocs/test.flv',6); echo $videoCoverName;//获得缩略图名称 ?> : 视频长度是:55秒43 视频创建时间;2011-9-13 视频缩略图:test.jpg -----------------------------测试完全ok 补充:如果想获得视频文件的大小可以使用: ,成功返回文件大小的字节数,否则返回 FALSE 。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- php – 是否有用于记录GET / POST参数的标准?
- php – 解析错误:语法错误,意外'[‘,expecting’)’
- 实测在class的function中include的文件中非php的global全局
- php – 使用Zend_Auth设置和扩展Session Lifetime
- 使用新语法转换php数组
- php利用scws实现mysql全文搜索功能的方法
- php实现图片上传时添加文字和图片水印技巧
- php – 使用Omnipay的PayPal Express Checkout未在沙盒帐户
- php获取目录中所有文件名及判断文件与目录的简单方法
- PHP Session变量不能传送到下一页的解决方法