亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

微信語音上傳 下載功能實例代碼

2024-07-10 13:32:37
字體:
來源:轉載
供稿:網友

假如現在有一個按鈕

<div class="inp_btn voice_btn active" id="record">       按住 說話     </div>

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

var recorder;var btnRecord = $('#record');var startTime = 0;var recordTimer = 300;// 發語音$.ajax({  url: 'url請求需要微信的一些東西 下面success就是返回的東西',  type: 'get',  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('touchstart', function (event) {        event.preventDefault();        startTime = new Date().getTime();        // 延時后錄音,避免誤操作        recordTimer = setTimeout(function () {          wx.startRecord({            success: function () {              localStorage.rainAllowRecord = 'true';              //style="display:block"              $(".voice_icon").css("display", "block");            },            cancel: function () {              layer.open({                content: '用戶拒絕了錄音授權',                btn: '確定',                shadeClose: false,              });            }          });        }, 300);      }).on('touchend', 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: '確定',                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: '/QyhSpeech/DownLoadVoice',          type: 'post',          data: { serverId: res.serverId, Id: Id },          dataType: "json",          success: function (data) {            if (data.Result == true && data.ResultCode == 1) {              layer.open({                content: "錄音上傳完成!",//data.Message                btn: '確定',                shadeClose: false,                yes: function (index) {                  window.location.href = window.location.href;                }              });            }            else {              layer.open({                content: data.Message,                btn: '確定',                shadeClose: false,              });            }          },          error: function (xhr, errorType, error) {            layer.open({              content: error,              btn: '確定',              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;    }

  調用GetVoicePath

//下載微信語音文件    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 });      }    }

AudioHelper類

using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Text.RegularExpressions;using System.Threading;namespace EYO.Common{  /// <summary>  /// 聲音幫助類  /// </summary>  public sealed class AudioHelper  {    private const string FfmpegUsername = "ffmpeg";    private const string FfmpegPassword = "it4pl803";    /// <summary>    /// 音頻轉換    /// </summary>    /// <param name="ffmpegPath">ffmpeg文件目錄</param>    /// <param name="soruceFilename">源文件</param>    /// <param name="targetFileName">目標文件</param>    /// <returns></returns>    public static string ConvertToMp3(string ffmpegPath, string soruceFilename, string targetFileName)    {      //string cmd = ffmpegPath + @"/ffmpeg.exe -i " + soruceFilename + " " + targetFileName;      string cmd = ffmpegPath + @"/ffmpeg.exe -i " + soruceFilename + " -ar 44100 -ab 128k " + targetFileName;      return ConvertWithCmd(cmd);    }    private static string ConvertWithCmd(string cmd)    {      try      {        System.Diagnostics.Process process = new System.Diagnostics.Process();        process.StartInfo.FileName = "cmd.exe";        process.StartInfo.UseShellExecute = false;        process.StartInfo.CreateNoWindow = true;        process.StartInfo.RedirectStandardInput = true;        process.StartInfo.RedirectStandardOutput = true;        process.StartInfo.RedirectStandardError = true;        process.Start();        process.StandardInput.WriteLine(cmd);        process.StandardInput.AutoFlush = true;        Thread.Sleep(1000);        process.StandardInput.WriteLine("exit");        process.WaitForExit();        string outStr = process.StandardOutput.ReadToEnd();        process.Close();        return outStr;      }      catch (Exception ex)      {        return "error" + ex.Message;      }    }  }}

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

總結

以上所述是小編給大家介紹的微信語音上傳 下載功能實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费福利在线| 日韩**中文字幕毛片| 久久不射电影网| 亚洲r级在线观看| 欧美xxxx综合视频| 国产ts人妖一区二区三区| 亚洲精品自拍视频| 精品偷拍各种wc美女嘘嘘| 国产精品偷伦免费视频观看的| 亚洲国产欧美精品| 国产精品久久久久aaaa九色| 亚洲欧美日韩图片| 亚洲国产日韩欧美综合久久| 精品视频—区二区三区免费| 69久久夜色精品国产69| 在线观看国产精品91| 欧美老女人bb| 亚洲精品一区二区网址| 国产精品热视频| 亚洲人成电影网站色| 日韩精品高清在线| 国产精品久久久久久久久影视| 伊人一区二区三区久久精品| 国产精品久久综合av爱欲tv| 国产精品一区二区久久| 国产精品香蕉在线观看| 日韩视频在线免费| 欧美一区二区大胆人体摄影专业网站| 国产在线观看一区二区三区| 91av视频在线观看| 久久视频国产精品免费视频在线| 成人在线播放av| 亚洲精品www| 成人精品视频99在线观看免费| 91干在线观看| 亚洲国产精品专区久久| 欧美制服第一页| 在线观看国产精品淫| 91精品一区二区| 91精品国产综合久久久久久久久| 国产日产久久高清欧美一区| 久久国产精彩视频| 成人激情视频在线观看| 91超碰中文字幕久久精品| 国产欧亚日韩视频| 日韩在线激情视频| 国产91精品黑色丝袜高跟鞋| 国产91精品青草社区| 久久精品亚洲热| 亚洲最新中文字幕| 狠狠久久亚洲欧美专区| 国产97在线视频| 欧美午夜性色大片在线观看| 97久久精品人人澡人人爽缅北| 久久中文字幕国产| 国产精品女人久久久久久| 欧美日韩电影在线观看| 97**国产露脸精品国产| 日韩激情av在线免费观看| 欧美精品第一页在线播放| 菠萝蜜影院一区二区免费| 亚洲曰本av电影| 国产精自产拍久久久久久蜜| 色妞一区二区三区| 91精品国产91久久久久福利| 欧美高清无遮挡| 久久精品国产亚洲精品| 夜夜狂射影院欧美极品| 色婷婷综合久久久久| 亚洲第一精品久久忘忧草社区| 色www亚洲国产张柏芝| 亚洲成人精品在线| 日韩欧美高清在线视频| 欧美最近摘花xxxx摘花| 欧美男插女视频| 午夜精品一区二区三区视频免费看| 国产精品福利在线观看网址| 国产亚洲日本欧美韩国| 中文字幕精品www乱入免费视频| 欧洲永久精品大片ww免费漫画| 国产精品一香蕉国产线看观看| 国产精品久久久久久av福利软件| 中文字幕在线视频日韩| 国产精品成久久久久三级| 亚洲香蕉av在线一区二区三区| 亚洲第一精品自拍| 精品国产999| 国产日韩精品在线观看| 亚洲欧美色图片| 久久久久久成人| 91九色国产社区在线观看| 亚洲精品免费一区二区三区| 在线不卡国产精品| 97精品久久久中文字幕免费| 午夜精品免费视频| 国产热re99久久6国产精品| 日韩在线视频中文字幕| 久久久久久久97| 亚洲偷熟乱区亚洲香蕉av| 国产日韩精品在线观看| 国产成人精品av在线| 久久久久久久影视| 91在线精品播放| 欧美性极品少妇精品网站| 91在线直播亚洲| 欧美性xxxxx| 欧美最猛黑人xxxx黑人猛叫黄| 欧美最猛黑人xxxx黑人猛叫黄| 97在线视频观看| 国产91精品高潮白浆喷水| 91中文在线视频| 91精品视频在线播放| 亚洲国产精品va在看黑人| 黑人巨大精品欧美一区免费视频| 成人在线视频福利| 久久国产精品首页| 欧美影院久久久| 日韩经典一区二区三区| 欧美夜福利tv在线| 欧美噜噜久久久xxx| 久久亚洲精品小早川怜子66| 欧美日韩在线视频观看| 亚洲三级黄色在线观看| 精品久久久av| 欧美在线视频一区二区| 亚洲综合在线做性| 狠狠干狠狠久久| 亚洲精品小视频在线观看| 久久精视频免费在线久久完整在线看| 欧美日韩成人在线视频| 欧美激情欧美狂野欧美精品| 中文字幕日韩在线观看| 国产精品嫩草影院久久久| 成人精品一区二区三区电影黑人| 色一区av在线| 欧美视频在线免费看| 色综合伊人色综合网| 成人h视频在线观看播放| 第一福利永久视频精品| 久久91亚洲精品中文字幕奶水| 国产乱人伦真实精品视频| 欧美性猛交xxxx免费看| 91国内揄拍国内精品对白| 国产精品成人免费视频| 国内外成人免费激情在线视频网站| 国内精品久久久久影院优| 裸体女人亚洲精品一区| 亚洲国产婷婷香蕉久久久久久| 欧美激情2020午夜免费观看| 另类色图亚洲色图| 亚洲r级在线观看| 91久久精品视频| 国产精品女人网站| 日韩免费av一区二区| 亚洲欧洲成视频免费观看| 欧美国产日韩视频| 国产精品久久久久久久天堂| 日韩国产欧美精品一区二区三区| 久久国产精品久久国产精品| 亚洲人成伊人成综合网久久久| 日韩69视频在线观看| 欧美乱妇40p| 久久精品91久久香蕉加勒比| 成人免费观看a|