获取视频元数据

1.安装ffmpeg

2.调用代码

function getMate($fileUrl){
	echo $fileUrl;
	echo "<br>";
	exec('D:\tools\ffmpeg-2022-05-29-git-a7e0997324-full_build\bin\ffprobe.exe -loglevel quiet -show_format -show_streams '.$fileUrl.' -print_format json 2>&1',$output,$return_val); //json
	//echo $output;die;
	$str = '';
	foreach ($output as  $value) {
		$str .=$value;
	}
	$obj = json_decode($str);
	$stream = $obj->streams;


	$avg_frame_rateArr = explode('/', $stream[0]->avg_frame_rate);
	$avg_frame_rate = floor(($avg_frame_rateArr[0]/$avg_frame_rateArr[1])*10)/10;
	
	
	$avg_frame_rateArr1 = explode('/', $stream[1]->avg_frame_rate);
	$avg_frame_rate1 = floor(($avg_frame_rateArr1[0]/$avg_frame_rateArr1[1])*10)/10;
	
	
	//dump($stream);
	
	$duration = $stream[0]->duration>$stream[1]->duration?$stream[0]->duration:$stream[1]->duration;
	$codec = strtolower($stream[0]->codec_name) == 'h264'? strtolower($stream[0]->codec_name):strtolower($stream[1]->codec_name);
	$frameRate = $avg_frame_rate > $avg_frame_rate1?$avg_frame_rate:$avg_frame_rate1;
	$channels = $stream[0]->channels>$stream[1]->channels?$stream[0]->channels:$stream[1]->channels;
	$width = $stream[0]->width>$stream[1]->width?$stream[0]->width:$stream[1]->width;
	$height = $stream[0]->height>$stream[1]->height ?$stream[0]->height:$stream[1]->height;
	$bit_rate = $stream[0]->bit_rate> $stream[1]->bit_rate?$stream[0]->bit_rate:$stream[1]->bit_rate;
	
	$ext = array(
		'duration'=>strval(floor($duration)*10000/10000),  //时长
		'codec'=>strval($codec),
		'frameRate'=>(string)$frameRate,    //频帧速率
		'channels'=>(string)$channels, //声道
		'width'=>(string)$width,
		'bitrate'=>(string)$bit_rate, //码流
		'height'=>(string)$height,
	);
// 	dump($bit_rate);
// dump((int)$duration);die;
	 //dump($ext);
	// die;
/*	dump(	(int)$duration <=20 );
dump(	  $codec !='h264' );
dump(	  (int)$frameRate <=10 );
dump(	 (int)$channels <=0  );
dump(	 (int)$width < 100  );
dump(	 (int)$height < 100 );
dump(	 (int)$bit_rate<500);*/
/*dump($ext);
dump($stream);*/

	// 需要, 时长18-20 , 帧速率$frameRate>=25

	if(   (int)$ext['duration'] <16*60  ||
		   (int)$ext['duration']>30*60 ||
	  $ext['codec'] !='h264' ||
	 (int)$channels !=2   ||
	 (int)$width != 1920  ||
	 (int)$height != 1080 ||
	 (int)$bit_rate<770000

	){

		return array('code'=>400,'data'=>json_encode($ext));
	}else{
		if( (int)$frameRate >=25 ){
			return array('code'=>200,'data'=>json_encode($ext));
		}
		return array('code'=>300,'data'=>json_encode($ext));
	}
	
}



/*{"duration":"2485.3220","codec":"h264","frameRate":"25","channels":"2","width":"1920","bitrate":"4096360","height":"1080"}
{"duration":"1175.8585","codec":"h264","frameRate":"30.0","channels":"2","width":"1920","bitrate":"553985","height":"1080"}*/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值