PHP使用FFmpeg获取视频播放总时长与码率等信息
请注意:这篇文章中会用到passthru,可能部分虚拟主机会将此命令禁用。
代码如下:
PHP
<?php define('FFMPEG_PATH','/usr/local/ffmpeg2/bin/ffmpeg-i"%s"2>&1'); functiongetVideoInfo($file){ $command=sprintf(FFMPEG_PATH,$file); ob_start(); passthru($command); $info=ob_get_contents(); ob_end_clean(); $data=array(); if(preg_match("/Duration:(.*?),start:(.*?),bitrate:(\d*)kb\/s/",$info,$match)){ $data['duration']=$match[1];//播放时间 $arr_duration=explode(':',$match[1]); $data['seconds']=$arr_duration[0]*3600+$arr_duration[1]*60+$arr_duration[2];//转换播放时间为秒数 $data['start']=$match[2];//开始时间 $data['bitrate']=$match[3];//码率(kb) } if(preg_match("/Video:(.*?),(.*?),(.*?)[,\s]/",$info,$match)){ $data['vcodec']=$match[1];//视频编码格式 $data['vformat']=$match[2];//视频格式 $data['resolution']=$match[3];//视频分辨率 $arr_resolution=explode('x',$match[3]); $data['width']=$arr_resolution[0]; $data['height']=$arr_resolution[1]; } if(preg_match("/Audio:(\w*),(\d*)Hz/",$info,$match)){ $data['acodec']=$match[1];//音频编码 $data['asamplerate']=$match[2];//音频采样频率 } if(isset($data['seconds'])&&isset($data['start'])){ $data['play_time']=$data['seconds']+$data['start'];//实际播放时间 } $data['size']=filesize($file);//文件大小 return$data; } //用法 $video_info=getVideoInfo('video.mp4'); print_r($video_info); ?>
总结
以上就是这篇文章的全部内容,希望对大家学习或使用PHP的时候能有所帮助。如果有疑问大家可以留言交流。