时间:2021-07-01 10:21:17 帮助过:29人阅读
命令分析:
grep命令:匹配查找文件里符合条件的字符串,这里查找Duration字段
cut:以空格为分割符,查询第四个元素,cut是很好的切割命令
下面附几个cut的实例:
#ffmpeg -i test.flv
输入下面信息:
①获得creationdate:文件创建时间
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/,//:表示:用空白符替换','号
下面是利用获得视频缩略图和视频总长度时间的代码:
代码如下:
- <br><!--?php <BR-->/* <br>* 获得视频文件的缩略图和视频长度 <br>*需要ffmpeg支持 <br>* @author PHP淮北 <br>* @date 2011-09-14 <br>* @copyright PHP淮北 <br>*/ <br>//获得视频文件的总长度时间和创建时间 <br>function getTime($file){ <br>$vtime = exec("ffmpeg -i ".$file." 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");//总长度 <br>$ctime = date("Y-m-d H:i:s",filectime($file));//创建时间 <br>//$duration = explode(":",$time); <br>// $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//转化为秒 <br>return array('vtime'=>$vtime, <br>'ctime'=>$ctime <br>); <br>} <br>//获得视频文件的缩略图 <br>function getVideoCover($file,$time) { <br>if(empty($time))$time = '1';//默认截取第一秒第一帧 <br>$strlen = strlen($file); <br>$videoCover = substr($file,0,$strlen-4); <br>$videoCoverName = $videoCover.'.jpg';//缩略图命名 <br>exec("ffmpeg -i ".$file." -y -f mjpeg -ss ".$time." -t 0.001 -s 320x240 ".$videoCoverName."",$out,$status); <br>if($status == 0)return $videoCoverName; <br>elseif ($status == 1)return FALSE; <br>} <br>//调用方法 <br>$duration = getTime('/usr/local/apache/htdocs/test.flv'); <br>echo $duration['vtime'].'<br>';//总长度 <br>echo $duration['ctime'].'<br>';//创建时间 <br>$videoCoverName = getVideoCover('/usr/local/apache/htdocs/test.flv', 6); <br>echo $videoCoverName;//获得缩略图名称 <br>?> <br> <br><p></p>
- <p>测试效果:</p>
- <p><img title="wps_clip_image-21485" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="119" alt="wps_clip_image-21485" src="http://img.bitscn.com/upimg/allimg/c140721/1405912Z415620-U238.jpg" width="255" border="0"></p>
- <p></p>
- <p>视频长度是:55秒43</p>
- <p>视频创建时间;2011-9-13</p>
- <p>视频缩略图:test.jpg</p>
- <p>-----------------------------测试完全ok</p>
- <p></p>
- <p>补充:如果想获得视频文件的大小可以使用:</p>
- <h2 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 5px; MARGIN: 0px; LINE-HEIGHT: normal; PADDING-TOP: 15px; FONT-FAMILY: Tahoma, verdana, arial, sans-serif, 宋体">filesize()</h2>
- <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 8px; MARGIN: 0px; LINE-HEIGHT: 1.6em; PADDING-TOP: 1px; FONT-FAMILY: Tahoma, verdana, arial, sans-serif, 宋体">filesize() 函数用于取得文件大小默认单位是:bytes,成功返回文件大小的字节数,否则返回 FALSE 。 </p>