其中用到了ffmpeg 把MP4视频文件转MP3音频😉
因为爬取到了视频文件无法获取视频内部信息,所以利用百度AI去帮助分析视频内容。
当爬取到视频文件后可以先通过ffmpeg转音频,之后再用百度AI转文字再将其存入数据库从而获得视频具体信息🤓
<?php
//获得语音识别的token
require_once 'aip-php-sdk-4/AipSpeech.php';
$url = 'https://aip.baidubce.com/oauth/2.0/token';
$post_data['grant_type'] = 'client_credentials';
$post_data['client_id'] = '*************';
$post_data['client_secret'] = '***************';
foreach ( $post_data as $k => $v )
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = postfs($url, $post_data);
$json2arr = json_decode($res,true);
//var_dump($json2arr);exit();
$access_token = $json2arr['access_token'];#解码之后拿到token
#原链接加上token,每次请求token都是变化的
$url='https://aip.baidubce.com/rpc/2.0/aasr/v1/create?access_token='.$access_token;
#需要post的数据
$params = array(
"format"=>"mp3",
"rate"=>16000,
"speech_url"=> "http://....../zhong.mp3",
"pid"=> 80001,
);
#加密成json文件
$params = json_encode($params);
#用post传入百度ai
$res = postfs($url,$params);
#var_dump($res);die;
#再传入function decode;
query_api_reuslt($res,$access_token);
//运行终端自动执行命令
$command='/..../ffmpeg -i /...../zhongwen.mp4 -vn -ab 128k -ar 16000 -y /...../zhong1.mp3';
function query_api_reuslt($res,$access_token){
$res_arr = json_decode($res,true);
$codearray=array(
"task_ids"=> array($res_arr['task_id']),#得到task id
);
$codeencode=json_encode($codearray);#再加密成json文件
//var_dump($codeencode);exit;
#把json形式的task id 和URL post到百度ai
$finalcode=postfs('https://aip.baidubce.com/rpc/2.0/aasr/v1/query?access_token='.$access_token,$codeencode);
#得到的结果decode
$finalcode_arr = json_decode($finalcode,true);
#判断如果是否结果生成
if($finalcode_arr['tasks_info'][0]['task_status'] != 'Running'){
var_dump($finalcode_arr);
file_put_contents('resilt.txt',$finalcode);
var_dump($finalcode);exit;
}else{
var_dump('continue');
sleep(5);
query_api_reuslt($res,$access_token);#递归知道结果出现
}
}
#post的时候用的是json格式,post 到百度来获取token 和id
function postfs($url, $data_string){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
?>