PHP는 WeChat 녹음을 영구 스토리지 인스턴스 공유로 임시 전환합니다.

小云云
풀어 주다: 2023-03-19 17:18:02
원래의
2191명이 탐색했습니다.

이 글은 주로 WeChat 녹음을 PHP WeChat에서 개발한 영구 저장 장치로 임시 변환하는 방법을 자세히 소개합니다. 관심 있는 친구들이 참고할 수 있기를 바랍니다.

최근 개발 중에 이 문제가 발생했습니다. 당사자 A는 사용자의 WeChat 녹음이 항상 유효하기를 바랍니다. 언제든지 친구의 공유를 열어서 친구의 녹음 내용을 들을 수 있습니다. 위챗 공식 개발 매뉴얼에 따르면 위챗 녹음 파일은 업로드 후 3일 동안만 위챗에 보관할 수 있으며, 3일이 지나면 무효가 됩니다. 무엇을 해야 할까요?

1. WeChat 미디어 리소스 다운로드 인터페이스


@params
String access_token 微信公众号access_token
String serverId 通过录音上传接口获取到的serverId
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={$access_token}&media_id={$serverId}
로그인 후 복사

2를 호출하여 WeChat 녹음을 로컬로 다운로드합니다. WeChat에서 로컬로 다운로드한 녹음 파일의 형식은 amr이지만 WeChat 웹 브라우저에서는 그렇지 않습니다. amr 파일 오디오 파일 재생을 지원하지 않습니다. 그래서 amr을
웹페이지에서 인식할 수 있는 mp3 형식으로 변환해야 합니다.

어떻게 변환하나요? 이 변환을 지원할 수 있는 플랫폼인 Qiniu Cloud Storage Platform을 찾았습니다. Qiniu Cloud Storage를 통해 amr을 mp3


require("./extension/autoload.php");//官方开发包 可在官方下载 php版本 载入其中的autoload.php extension 是随意 起的名字

/**
 * @param
 * String $filepa 本地amr文件路径
 * @return
 * String 解析后存储在七牛存储空间中的mp3远程地址
 */
function upchange($filepa){
  $accessKey="七牛accessKey 在七牛后台获取";
  $secretKey="七牛secretKey 在七牛后台获取";
  $httpUrl ="七牛分配的访问地址 在七牛后台获取";
  $bucket = "存储空间对象bucket 在七牛后台创建";
  //转码时使用的队列名称
  $pipeline = '转码队列名称 在七牛后台创建';
  $auth = new \Qiniu\Auth($accessKey, $secretKey);
  $rand_name = getRandChar__(6).time().'.mp3';
  //要进行转码的转码操作
  $fops = "avthumb/mp3/ab/64k/ar/22050";
  //$fops = "mp3";
  //可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当间
  $savekey = Qiniu\base64_urlSafeEncode('kepei:'.$rand_name);
  $fops = $fops.'|saveas/'.$savekey;

  $policy = array(
    'persistentOps'   => $fops,
    'persistentNotifyUrl' => 'http://',
  );
  $uptoken = $auth->uploadToken($bucket, null, 3600, $policy);

  //上传文件的本地路径
  $filePath = $filepa;
  $key = $rand_name;
  //$key = '';
  $uploadMgr = new \Qiniu\Storage\UploadManager(); 
  list($ret, $err) = $uploadMgr->putFile($uptoken, $key, $filePath);

  if ($err !== null) {
    return false;
  } else {
    return $httpUrl.$rand_name;
  }
}

function getRandChar__($length){
  $str = null;
  $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
  $max = strlen($strPol)-1;
  for($i=0;$i<$length;$i++){
    $str.=$strPol[rand(0,$max)];//rand($min,$max)生成介于min和max两个数之间的一个随机整数
  }
  return $str;
}

$amrToMp3 = upchange(&#39;本地amr文件路径&#39;);
//mp3 在七牛上的访问地址
var_dump($amrToMp3);
/**
 * 如果你希望将这个mp3 存储在本地而不是在七牛上,那么你需要在程序上等待几秒,因为这时七牛在转换改amr的格式
 */
 sleep(10);
$res = curlHttp($amrToMp3);    //curlHttp 就是 php  curl 机制 不懂的可以看下我下面文章机制
$open = fopen(&#39;demo.mp3&#39;,&#39;w&#39;);
fwrite($open,$res);
fclose($open);
로그인 후 복사

php curHttp

관련 권장 사항:

PHP WeChat 개발 튜토리얼: 방법 보낸 이미지와 텍스트를 검색하고 일치하는 키워드로 답장하세요

PHP WeChat 개발을 위한 추천 비디오 리소스

WeChat 개발 실습 공유 기능

위 내용은 PHP는 WeChat 녹음을 영구 스토리지 인스턴스 공유로 임시 전환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!