微信语音的上传与下载功能实现详解
这篇文章主要介绍了微信语音上传 下载功能实例代码,需要的朋友可以参考下
假如现在有一个按钮
<p class="inp_btn voice_btn active" id="record"> 按住 说话 </p>
下面就是调用微信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; } } } }
文中标记红色的需要以下一个类库 放在文中最后链接里面 到时候直接放到项目里面即可(我也是找到)
Atas ialah kandungan terperinci 微信语音的上传与下载功能实现详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apabila anda log masuk ke akaun stim orang lain pada komputer anda, dan akaun orang lain itu kebetulan mempunyai perisian kertas dinding, stim akan memuat turun kertas dinding yang dilanggan ke akaun orang lain secara automatik selepas bertukar kembali ke akaun anda sendiri Pengguna boleh menyelesaikan masalah ini dengan mematikan penyegerakan awan wap. Apa yang perlu dilakukan jika enjin kertas dinding memuat turun kertas dinding orang lain selepas log masuk ke akaun lain 1. Log masuk ke akaun stim anda sendiri, cari penyegerakan awan dalam tetapan, dan matikan penyegerakan awan stim. 2. Log masuk ke akaun Steam orang lain yang anda log masuk sebelum ini, buka Bengkel Kreatif Kertas Dinding, cari kandungan langganan, dan kemudian batalkan semua langganan. (Sekiranya anda tidak dapat mencari kertas dinding pada masa hadapan, anda boleh mengumpulnya dahulu dan kemudian membatalkan langganan) 3. Tukar semula ke wap anda sendiri

Kedua-dua telefon bimbit vivox100s dan x100 adalah model yang mewakili dalam barisan produk telefon mudah alih vivo, masing-masing mewakili tahap teknologi canggih vivo dalam tempoh masa yang berbeza. Artikel ini akan menjalankan perbandingan terperinci antara kedua-dua telefon mudah alih ini dari segi perbandingan prestasi dan analisis fungsi untuk membantu pengguna memilih telefon mudah alih yang sesuai dengan mereka dengan lebih baik. Mula-mula, mari kita lihat perbandingan prestasi antara vivox100s dan x100. vivox100s dilengkapi dengan yang terbaru

Permainan superpeople boleh dimuat turun melalui klien wap Saiz permainan ini ialah kira-kira 28G Ia biasanya mengambil masa satu setengah jam untuk memuat turun dan memasang Berikut ialah tutorial muat turun dan pemasangan khusus untuk anda. Kaedah baharu untuk memohon ujian tertutup global 1) Cari "SUPERPEOPLE" dalam kedai Steam (muat turun klien stim) 2) Klik "Minta akses kepada ujian tertutup SUPERPEOPLE" di bahagian bawah halaman kedai "SUPERPEOPLE" 3) Selepas mengklik butang minta butang akses, Permainan "SUPERPEOPLECBT" boleh disahkan dalam perpustakaan Steam 4) Klik butang pasang dalam "SUPERPEOPLECBT" dan muat turun

Bagaimana untuk melaksanakan log masuk WeChat dwi pada telefon mudah alih Huawei? Dengan kebangkitan media sosial, WeChat telah menjadi salah satu alat komunikasi yang sangat diperlukan dalam kehidupan seharian orang ramai. Walau bagaimanapun, ramai orang mungkin menghadapi masalah: log masuk ke beberapa akaun WeChat pada masa yang sama pada telefon mudah alih yang sama. Bagi pengguna telefon mudah alih Huawei, tidak sukar untuk mencapai log masuk WeChat dwi Artikel ini akan memperkenalkan cara mencapai log masuk WeChat dwi pada telefon mudah alih Huawei. Pertama sekali, sistem EMUI yang disertakan dengan telefon mudah alih Huawei menyediakan fungsi yang sangat mudah - pembukaan dua aplikasi. Melalui fungsi pembukaan dwi aplikasi, pengguna boleh serentak

foobar2000 ialah perisian yang boleh mendengar sumber muzik pada bila-bila masa Ia membawakan anda semua jenis muzik dengan kualiti bunyi tanpa kehilangan Versi pemain muzik yang dipertingkatkan membolehkan anda mendapatkan pengalaman muzik yang lebih komprehensif dan selesa mainkan audio lanjutan pada komputer Peranti dipindahkan ke telefon mudah alih untuk memberikan pengalaman main balik muzik yang lebih mudah dan cekap Reka bentuk antara muka adalah ringkas, jelas dan mudah digunakan Ia menggunakan gaya reka bentuk minimalis tanpa terlalu banyak hiasan dan operasi yang menyusahkan untuk bermula dengan cepat. Ia juga menyokong pelbagai kulit dan Tema, memperibadikan tetapan mengikut pilihan anda sendiri, dan mencipta pemain muzik eksklusif yang menyokong main balik berbilang format audio. Ia juga menyokong fungsi perolehan audio untuk melaraskan kelantangan kepada keadaan pendengaran anda sendiri untuk mengelakkan kerosakan pendengaran yang disebabkan oleh kelantangan yang berlebihan. Seterusnya, izinkan saya membantu anda

Sebagai alat cakera rangkaian yang mudah dan praktikal, Quark boleh membantu pengguna mendapatkan sumber kegemaran mereka dengan mudah Bagaimana jika anda ingin memuat turun fail secara tempatan? Biar editor memberitahu anda sekarang, mari belajar bersama! Cara memuat turun Cakera Rangkaian Quark ke perkongsian setempat 1. Mula-mula buka perisian Quark, masukkan halaman utama dan klik [Ikon Awan] di sebelah kanan bawah 2. Kemudian pada halaman Cakera Rangkaian Quark, kami klik fungsi [Dokumen]; 3. Kemudian pergi ke halaman dokumen, pilih fail yang anda ingin muat turun, dan klik [ikon tiga titik] 4. Selepas klik terakhir, kami klik [Muat turun] dalam kotak dialog pop timbul;

Bagaimana untuk memuat turun dan menyimpan video Douyin? Anda boleh memuat turun dan menyimpan video dalam APP video pendek Douyin Kebanyakan pengguna tidak tahu cara memuat turun dan menyimpan video Douyin Seterusnya ialah gambarajah cara memuat turun dan menyimpan video Douyin yang dibawa oleh editor . Teks tutorial, pengguna yang berminat datang dan lihat! Tutorial tentang cara menggunakan Douyin: Cara memuat turun dan menyimpan video Douyin 1. Mula-mula buka APP video pendek Douyin, masukkan halaman utama dan klik butang [Kongsi] di sebelah kanan 2. Selepas itu, bar pelbagai fungsi akan kembangkan di bawah, luncur ke kanan untuk mencari ikon [ Simpan setempat] 3. Kemudian anda perlu menunggu untuk muat turun, dan kemudian sempadan [Simpan, sila pergi ke album untuk melihat] akan muncul; halaman album, dan anda boleh melihat bahawa video yang baru anda muat turun telah disimpan.

UC Browser ialah penyemak imbas yang digunakan oleh semua orang. Ia membolehkan semua orang mendapatkan pengalaman dalam talian yang unik. Ia sangat mudah dan boleh mencari pelbagai sumber untuk anda, beberapa daripadanya anda tidak dapat menikmati videonya berfungsi di sini. Kandungannya sangat menarik dan tidak boleh berhenti sama sekali. Mereka juga mahu memuat turun video secara tempatan supaya mereka boleh menontonnya pada bila-bila masa sahaja Apabila saya menontonnya, saya telah menyelesaikan kaedah khusus untuk memuat turun video. Saya harap ia dapat membantu anda. Cara memuat turun video ke komputer tempatan melalui Pelayar UC: 1. Buka UC Browser, klik pada bar menu, dan pilih Muat turun/Video 2. Klik pada video yang dicache 3. Klik pada pilihan video;
