/*
* ffmpeg直接获取视频信息
*
* */
//获取视频信息
function get_videoInfo($video_file){
ob_start(); // 使用输出缓冲,获取ffmpeg所有输出内容
$str="ffprobe -v quiet -print_format json -show_format -show_streams ".$video_file;
system($str);
$jsonData=json_decode(ob_get_contents(),true);
ob_end_clean(); // 使用输出缓冲,清除ffmpeg所有输出内容
$res=[];
$streams=$jsonData['streams'][1];
$res['width']=$streams['width']; //宽度
$res['height']=$streams['height']; //长度
$res['duration']=$streams['duration']; //获取视频长度
$res['tagsCount']=count($streams['tags']); //获取数量
$format=$jsonData['format'];
$res['videoSize']=sprintf( "%.1f ",($format['size']/1024/1000))."MB"; //获取视频大小
if($res['tagsCount']==4){
$res['rotate']=$streams['tags']['rotate'];
$res['imgUrl']=getVideoCover($video_file, '', $res['width'], $res['height']);
}else{
$res['rotate']="";
$res['imgUrl']=getVideoCover($video_file, '', $res['height'], $res['width']);
}
return $res;
}
/*
* 获得视频文件的缩略图
* @file 视频地址
* ,url 缩略图地址
* */
function getVideoCover($file, $time,$width=0,$height=0)
{
$sveFile=ROOT_PATH . 'public' . DS . 'uploads'. DS.'videoImg/' ;
$name=time().mt_rand(0,99).".png";
$time=$time?$time:'2';//默认截取第一秒第一帧
// $str=exec("/usr/local/ffmpeg/bin/ffmpeg -ss 10 -i ".$file." 2>&1 -y -f mjpeg -vframes 1 -s 352x240 ".$_SERVER['DOCUMENT_ROOT']."/MVC/include/img/b-%03d.jpg",$out,$status);
// ffmpeg -ss 5 -i http://www.***.com/intangibleApp/mp4/2018-01-08-56.mp4 -vf rotate=0 -y -f mjpeg -vframes 1 -s 1242*699 /home/test/你的项目/public/uploads/videoImg/%3d.png
// $str= "ffmpeg -ss ".$time." -i ".$file." -y -f mjpeg -vframes 1 -s ".$width."*".$height.$sveFile.$name;
$str= "ffmpeg -ss ".$time." -i ".$file." -y -f mjpeg -vframes 1 -s ".$height."*".$width." ".$sveFile.$name;
$result = system($str);
$saveUrl=$sveFile.$name;
if($_SERVER['HTTP_HOST']=="www.***.com"){
$fileUrl="feiyiproject/videoImg/"; //正式地址图片路径
}else{
$fileUrl="intangibleApp/videoImg/"; //测试地址路径
}
vendor('aliyun.autoload');
$accessKeyId = "*******";//去阿里云后台获取秘钥
$accessKeySecret = "********";//去阿里云后台获取秘钥
$endpoint = "oss-cn-shenzhen.aliyuncs.com";//你的阿里云OSS地址
$ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
$bucket = "阿里云oss空间";//oss中的文件上传空间
$object = $fileUrl . $name;//想要保存文件的名称
$fname = 'http://image.***.com/' . ltrim($object, './');
try {
$ossClient->uploadFile($bucket, $object, $saveUrl);
if(file_exists($saveUrl)){
unlink($saveUrl);
}
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
return $fname;
}
//获取视频大小
function getVideoSize($video){
$size=sprintf( "%.1f ",($video['size']/1024/1000))."MB";
return $size;
}
//获得视频文件的总长度时间和创建时间
function getVideoTime($file)
{
$vtime = exec("ffmpeg -i " . $file . " 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");//CuPlayer.com 总长度
// $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]);//CuPlayer.com 转化为秒
return $vtime;
} 谢谢您的助力!