php 调用ffmpeg获取视频信息的简单实现
本文将介绍使用php调用ffmpeg获取视频信息,调用ffmpeg首先需要服务器上安装了ffmpeg,安装方法很简单,可自行搜索。
代码如下:
&1'); /** *使用ffmpeg获取视频信息 *@paramString$file视频文件 *@returnArray */ functiongetVideoInfo($file){ ob_start(); passthru(sprintf(FFMPEG_CMD,$file)); $video_info=ob_get_contents(); ob_end_clean(); //使用输出缓冲,获取ffmpeg所有输出内容 $ret=array(); //Duration:00:33:42.64,start:0.000000,bitrate:152kb/s if(preg_match("/Duration:(.*?),start:(.*?),bitrate:(\d*)kb\/s/",$video_info,$matches)){ $ret['duration']=$matches[1];//视频长度 $duration=explode(':',$matches[1]); $ret['seconds']=$duration[0]*3600+$duration[1]*60+$duration[2];//转为秒数 $ret['start']=$matches[2];//开始时间 $ret['bitrate']=$matches[3];//bitrate码率单位kb } //Stream#0:1:Video:rv20(RV20/0x30325652),yuv420p,352x288,117kb/s,15fps,15tbr,1ktbn,1ktbc if(preg_match("/Video:(.*?),(.*?),(.*?)[,\s]/",$video_info,$matches)){ $ret['vcodec']=$matches[1];//编码格式 $ret['vformat']=$matches[2];//视频格式 $ret['resolution']=$matches[3];//分辨率 list($width,$height)=explode('x',$matches[3]); $ret['width']=$width; $ret['height']=$height; } //Stream#0:0:Audio:cook(cook/0x6B6F6F63),22050Hz,stereo,fltp,32kb/s if(preg_match("/Audio:(.*),(\d*)Hz/",$video_info,$matches)){ $ret['acodec']=$matches[1];//音频编码 $ret['asamplerate']=$matches[2];//音频采样频率 } if(isset($ret['seconds'])&&isset($ret['start'])){ $ret['play_time']=$ret['seconds']+$ret['start'];//实际播放时间 } $ret['size']=filesize($file);//视频文件大小 $video_info=iconv('gbk','utf8',$video_info); returnarray($ret,$video_info); } //输出视频信息 $video_info=getVideoInfo('myvideo.avi'); print_r($video_info[0]); ?>
输出:
Array ( [duration]=>00:33:42.64 [seconds]=>2022.64 [start]=>0.000000 [bitrate]=>152 [vcodec]=>rv20(RV20/0x30325652) [vformat]=>yuv420p [resolution]=>352x288 [width]=>352 [height]=>288 [acodec]=>cook(cook/0x6B6F6F63) [asamplerate]=>22050 [play_time]=>2022.64 [size]=>38630744 )
以上这篇php调用ffmpeg获取视频信息的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。