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获取视频信息的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。