首頁 後端開發 php教程 微信語音的上傳與下載功能實現詳解

微信語音的上傳與下載功能實現詳解

May 26, 2018 pm 04:50 PM
下載 功能 實現

這篇文章主要介紹了微信語音上傳下載功能實例代碼,需要的朋友可以參考下

假如現在有一個按鈕

<p class="inp_btn voice_btn active" id="record">
       按住 说话
     </p>
登入後複製

下面就是調用微信jssdk的方法

var recorder;
var btnRecord = $(&#39;#record&#39;);
var startTime = 0;
var recordTimer = 300;
// 发语音
$.ajax({
  url: &#39;url请求需要微信的一些东西 下面success就是返回的东西&#39;,
  type: &#39;get&#39;,
  data: { url: url },
  success: function (data) {
    var json = $.parseJSON(data);
    //alert(json);
    //假设已引入微信jssdk。【支持使用 AMD/CMD 标准模块加载方法加载】
    wx.config({
      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
      appId: json.appid, // 必填,公众号的唯一标识
      timestamp: json.timestamp, // 必填,生成签名的时间戳
      nonceStr: json.nonceStr, // 必填,生成签名的随机串
      signature: json.signature, // 必填,签名,见附录1
      jsApiList: [
      "startRecord",
      "stopRecord",
      "onVoiceRecordEnd",
      "playVoice",
      "pauseVoice",
      "stopVoice",
      "onVoicePlayEnd",
      "uploadVoice",
      "downloadVoice",
      ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
    });
    wx.ready(function () {
      btnRecord.on(&#39;touchstart&#39;, function (event) {
        event.preventDefault();
        startTime = new Date().getTime();
        // 延时后录音,避免误操作
        recordTimer = setTimeout(function () {
          wx.startRecord({
            success: function () {
              localStorage.rainAllowRecord = &#39;true&#39;;
              //style="display:block"
              $(".voice_icon").css("display", "block");
            },
            cancel: function () {
              layer.open({
                content: &#39;用户拒绝了录音授权&#39;,
                btn: &#39;确定&#39;,
                shadeClose: false,
              });
            }
          });
        }, 300);
      }).on(&#39;touchend&#39;, function (event) {
        event.preventDefault();
        // 间隔太短
        if (new Date().getTime() - startTime < 300) {
          startTime = 0;
          // 不录音
          clearTimeout(recordTimer);
        } else { // 松手结束录音
          wx.stopRecord({
            success: function (res) {
              $(".voice_icon").css("display", "none");
              voice.localId = res.localId;
              // 上传到服务器
              uploadVoice();
            },
            fail: function (res) {
              //alert(JSON.stringify(res));
              layer.open({
                content: JSON.stringify(res),
                btn: &#39;确定&#39;,
                shadeClose: false,
              });
            }
          });
        }
      });
    });
  },
  error: function () { }
})
登入後複製

 上傳語音的方法

function uploadVoice() {
    //调用微信的上传录音接口把本地录音先上传到微信的服务器
    //不过,微信只保留3天,而我们需要长期保存,我们需要把资源从微信服务器下载到自己的服务器
    wx.uploadVoice({
      localId: voice.localId, // 需要上传的音频的本地ID,由stopRecord接口获得
      isShowProgressTips: 1, // 默认为1,显示进度提示
      success: function (res) {
        // alert(JSON.stringify(res));
        //把录音在微信服务器上的id(res.serverId)发送到自己的服务器供下载。
        voice.serverId = res.serverId;
        $.ajax({
          url: &#39;/QyhSpeech/DownLoadVoice&#39;,
          type: &#39;post&#39;,
          data: { serverId: res.serverId, Id: Id },
          dataType: "json",
          success: function (data) {
            if (data.Result == true && data.ResultCode == 1) {
              layer.open({
                content: "录音上传完成!",//data.Message
                btn: &#39;确定&#39;,
                shadeClose: false,
                yes: function (index) {
                  window.location.href = window.location.href;
                }
              });
            }
            else {
              layer.open({
                content: data.Message,
                btn: &#39;确定&#39;,
                shadeClose: false,
              });
            }
          },
          error: function (xhr, errorType, error) {
            layer.open({
              content: error,
              btn: &#39;确定&#39;,
              shadeClose: false,
            });
          }
        });
      }
    });
  }
登入後複製

  後台呼叫的方法     需要一個ffmpeg.exe自行下載

//下载语音并且转换的方法
    private string GetVoicePath(string voiceId, string access_token)
    {
      string voice = "";
      try
      {
        Log.Debug("access_token:", access_token);
        //调用downloadmedia方法获得downfile对象
        DownloadFile downFile = WeiXin.DownloadMedia(voiceId, access_token);
        if (downFile.Stream != null)
        {
          string fileName = Guid.NewGuid().ToString();
          //生成amr文件
          string amrPath = Server.MapPath("~/upload/audior/");
          if (!Directory.Exists(amrPath))
          {
            Directory.CreateDirectory(amrPath);
          }
          string amrFilename = amrPath + fileName + ".amr";
          //var ss = GetAMRFileDuration(amrFilename);
          //Log.Debug("ss", ss.ToString());
          using (FileStream fs = new FileStream(amrFilename, FileMode.Create))
          {
            byte[] datas = new byte[downFile.Stream.Length];
            downFile.Stream.Read(datas, 0, datas.Length);
            fs.Write(datas, 0, datas.Length);
          }
          //转换为mp3文件
          string mp3Path = Server.MapPath("~/upload/audio/");
          if (!Directory.Exists(mp3Path))
          {
            Directory.CreateDirectory(mp3Path);
          }
          string mp3Filename = mp3Path + fileName + ".mp3";
          AudioHelper.ConvertToMp3(Server.MapPath("~/ffmpeg/"), amrFilename, mp3Filename);
          voice = fileName;
          Log.Debug("voice:", voice);
        }
      }
      catch { }
      return voice;
    }
登入後複製

  r類別

//下载微信语音文件
    public JsonResult DownLoadVoice()
    {
      var file = "";
      try
      {
        var serverId = Request["serverId"];//文件的serverId
        file = GetVoicePath(serverId, CacheHelper.GetAccessToken());
        return Json(new ResultJson { Message = file, Result = true, ResultCode = 1 });
      }
      catch (Exception ex)
      {
        return Json(new ResultJson { Message = ex.Message, Result = false, ResultCode = 0 });
      }
    }
登入後複製

文中標記紅色的需要以下一個類別庫放在文中最後連結裡面到時候直接放到項目裡面即可(我也是找到)

以上是微信語音的上傳與下載功能實現詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 Mar 19, 2024 pm 02:00 PM

當你在自己電腦上登過別人steam帳號之後,剛好這個別人的帳號也有wallpaper軟體,切換回自己帳號之後steam就會自動下載別人帳號訂閱的桌布,使用者可以透過關閉steam雲端同步解決。 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦1、登陸你自己的steam帳號,在設定裡面找到雲端同步,關閉steam雲端同步。 2.登陸你之前登陸的別人的steam帳號,打開wallpaper創意工坊,找到訂閱內容,然後取消全部訂閱。 (以後防止找不到壁紙,可以先收藏再取消訂閱)3、切換回自己的stea

超級人類(superpeople)遊戲下載安裝方法介紹 超級人類(superpeople)遊戲下載安裝方法介紹 Mar 30, 2024 pm 04:01 PM

超級人類(superpeople)遊戲可以透過steam客戶端下載遊戲,這款遊戲的大小在28G左右,下載到安裝通常需要一個半小時​​,以下為大家帶來具體的下載安裝教學!新的申請全球封閉測試方法1)在Steam商店(steam客戶端下載)搜尋“SUPERPEOPLE”2)點擊“SUPERPEOPLE”商店頁面下方的“請求SUPERPEOPLE封閉測試訪問權限”3)點擊請求訪問權限按鈕後,將在Steam庫中可確認「SUPERPEOPLECBT」遊戲4)在「SUPERPEOPLECBT」中點選安裝按鈕並下

foob​​ar2000怎麼下載? -foobar2000怎麼使用 foob​​ar2000怎麼下載? -foobar2000怎麼使用 Mar 18, 2024 am 10:58 AM

foob​​ar2000是一款能隨時收聽音樂資源的軟體,各種音樂無損音質帶給你,增強版本的音樂播放器,讓你得到更全更舒適的音樂體驗,它的設計理念是將電腦端的高級音頻播放器移植到手機上,提供更便捷高效的音樂播放體驗,介面設計簡潔明了易於使用它採用了極簡的設計風格,沒有過多的裝飾和繁瑣的操作能夠快速上手,同時還支持多種皮膚和主題,根據自己的喜好進行個性化設置,打造專屬的音樂播放器支援多種音訊格式的播放,它還支援音訊增益功能根據自己的聽力情況調整音量大小,避免過大的音量對聽力造成損害。接下來就讓小編為大

vivox100s和x100區別:效能比較及功能解析 vivox100s和x100區別:效能比較及功能解析 Mar 23, 2024 pm 10:27 PM

vivox100s和x100手機都是vivo手機產品線中的代表機型,它們分別代表了vivo在不同時間段內的高端技術水平,因此這兩款手機在設計、性能和功能上均有一定區別。本文將從效能比較和功能解析兩個面向對這兩款手機進行詳細比較,幫助消費者更好地選擇適合自己的手機。首先,我們來看vivox100s和x100在效能上的比較。 vivox100s搭載了最新的

華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

貝樂虎兒歌怎麼下載 貝樂虎兒歌怎麼下載 Mar 28, 2024 am 11:10 AM

貝樂虎兒歌作為孩子們成長過程中不可或缺的陪伴,以其歡快的旋律、生動的畫面和寓教於樂的內容,贏得了無數家長和孩子們的喜愛。為了讓寶貝們能夠隨時隨地享受到兒歌帶來的快樂,許多家長都希望能夠將貝樂虎兒歌下載到手機或平板上方便隨時拿來給孩子聽,但是究竟該如何將貝樂虎的兒歌保存到自己的手機呢,這篇教學就會為大家帶來詳細的內容介紹,還不了解的用戶們就快來跟著本文一起閱讀了解一下吧。貝樂虎兒歌下載兒歌多圖教學:開啟軟體,選擇一首想要下載的兒歌,小編這裡以「經典兒歌」為例2.在兒歌明星的下方點選「下載」按鈕,

夸克網盤在哪下載檔案_夸克網盤下載到本機方法分享 夸克網盤在哪下載檔案_夸克網盤下載到本機方法分享 Mar 21, 2024 pm 03:57 PM

夸克作為一款方便實用的網盤工具,能夠幫助使用者輕鬆取得喜歡的資源,如果想將某個檔案下載到本機要如何操作呢?下面就由小編來告訴大家,趕快一起學習吧!夸克網盤下載到本地方法分享1、先打開夸克軟體,進入到首頁之後我們點擊右下方的【雲圖標】;2、然後在夸克網盤的頁面中我們點擊其中的【文檔】功能;3、接著來到文件的頁面中選擇好需要下載的文件之後點選【三點圖示】;4、最後點選過後在彈出的對話框中我們點選【下載】即可;

自媒體到底是什麼?它的主要特點和功能有哪些? 自媒體到底是什麼?它的主要特點和功能有哪些? Mar 21, 2024 pm 08:21 PM

隨著網路的快速發展,自媒體這個概念已經深入人心。那麼,自媒體到底是什麼呢?它有哪些主要特點和功能呢?接下來,我們將一一探討這些問題。一、自媒體到底是什麼?自媒體,顧名思義,就是自己就是媒體。它是指透過網路平台,個人或團隊可以自主創建、編輯、發布和傳播內容的資訊載體。不同於傳統媒體,如報紙、電視、電台等,自媒體具有更強的互動性和個人化,讓每個人都能成為訊息的生產者和傳播者。二、自媒體的主要特色和功能有哪些? 1.低門檻:自媒體的崛起降低了進入媒體產業的門檻,不再需要繁瑣的設備和專業的團隊,一部手

See all articles