asp.net音頻轉(zhuǎn)換之.amr轉(zhuǎn).mp3(利用七牛轉(zhuǎn)換法)
前言
相信大家應(yīng)該都知道吧,.amr格式用于移動設(shè)備的音頻,壓縮比比較大,多用于人聲、通話,效果還行!所以,移動設(shè)備多采用amr格式來進行錄存!比較常見的例子:通話錄音,微信語音以及錄音等!
但是這個鬼,用兩個字來形容,就是“蛋疼”;因為HTML5壓根就不支持它(amr:我是個《孤兒》 ,導(dǎo)演:佐米·希爾拉);所以,試聽效果也就很難實現(xiàn)了!雖然微信是提供試聽的,但一旦離開了頁面,那就意味著,你再也無法播放你的錄音了!
所以你不得不將文件轉(zhuǎn)換下格式!
目前,小編掌握的轉(zhuǎn)換格式的方法有兩種:一是上傳到七牛云服務(wù)進行轉(zhuǎn)換下載;二是通過ffmpeg 應(yīng)用進行轉(zhuǎn)換!本文先進行介紹利用七牛轉(zhuǎn)換的實現(xiàn)方法,下面來一起看看吧。
七牛轉(zhuǎn)換法:
1.首先,注冊七牛云存儲!
2.七牛會返給你“兩張”通行證,通行證是通信七牛必不可少的工具!上圖一張:
AK 和 SK 是程序執(zhí)行的前提!
3.創(chuàng)建空間,添加隊列!空間名稱,和隊列名稱都用的到!
空間是存儲你上傳文件的倉庫,隊列是加工文件的工廠!可以創(chuàng)建多個!
空間需要配置域名!
4.下載七牛提供的源代碼:我是鏈接
文件里面有個名為“Qiniu.4.0.dll”的文件,把它引用到你的項目中!
/// <summary> /// 設(shè)置你的AK、SK 和 域名 /// </summary> private static void SetKey() { //設(shè)置賬號的AK和SK Config.ACCESS_KEY = "########################################"; Config.SECRET_KEY = "****************************************"; Config.API_HOST = "http://###.***.com"; }
5.上傳文件,并通知七牛要給文件轉(zhuǎn)換格式,以下例子是:.AMR格式 轉(zhuǎn) .MP3格式。
/// <summary> /// 上傳文件并預(yù)轉(zhuǎn)格式 /// </summary> /// <param name="key">要轉(zhuǎn)換格式的文件名</param> /// <param name="filePath">文件路徑</param> /// <returns></returns> private string upload(string key, string filePath) { IOClient target = new IOClient(); PutExtra extra = new PutExtra(); //設(shè)置文件上傳后所存儲的空間名稱 String bucket = "amrtest"; //普通上傳,只需要設(shè)置上傳的空間名就可以了,第二個參數(shù)可以設(shè)定token過期時間 PutPolicy put = new PutPolicy(bucket, 3600); //對轉(zhuǎn)碼后的文件進行使用saveas參數(shù)自定義命名,也可以不指定,文件會默認命名并保存在當前空間。 string mp3tpname = key.Split('.')[0].ToString() + ".mp3"; String urlbase64 = Qiniu.Util.Base64URLSafe.Encode(bucket + ":" + mp3tpname); //一般指文件要上傳到的目標存儲空間(Bucket)。若為“Bucket”, //表示限定只能傳到該Bucket(僅限于新增文件);若為”Bucket:Key”,表示限定特定的文件,可修改該文件。 put.Scope = bucket + ":" + key; // 可選。 若非0, 即使Scope為 Bucket:Key 的形式也是insert only. put.InsertOnly = 0; // "|"豎線前是你要轉(zhuǎn)換格式的命令;豎線后是轉(zhuǎn)換完成后,文件的命名和存儲的空間的名稱! put.PersistentOps = "avthumb/mp3/ab/128k/ar/44100/acodec/libmp3lame|saveas/" + urlbase64; //規(guī)定文件要在那個“工廠”進行改裝,也就是隊列名稱! put.PersistentPipeline = "LittleBai"; //音視頻轉(zhuǎn)碼持久化完成后,七牛的服務(wù)器會向用戶發(fā)送處理結(jié)果通知。這里指定的url就是用于接收通知的接口。 //設(shè)置了`persistentOps`,則需要同時設(shè)置此字段 put.PersistentNotifyUrl = "http://***.###.com/***/default.aspx"; //生成上傳Token string upToken = put.Token(); //上傳文件 PutRet ret = target.PutFile(upToken, key, filePath, extra); //返回數(shù)據(jù)格式:{"hash":"FvipQyyMwI0gvGc7_NUd8OVBuJ85","key":"55456.amr","persistentId":"z0.57eb86a945a2652644d64308"} return ret.Response.ToString(); }
6.最后,將轉(zhuǎn)換好的文件從七??臻g下載到當前服務(wù)器上。
/// <summary> /// 下載 /// </summary> /// <param name="key">轉(zhuǎn)好格式的文件名稱</param> /// <param name="savepath">下載后的保存路徑</param> /// <returns></returns> private string download(string key, string savepath) { //構(gòu)造私有空間的需要生成的下載的鏈接 你幫定在空間的域名 加 要下載的文件名 string baseUrl = "http://***.###.com/" + key; //調(diào)用MakeRequest方法生成私有下載鏈接 string private_url = GetPolicy.MakeRequest(baseUrl); //下載文件 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(private_url); req.Method = "GET"; using (WebResponse wr = req.GetResponse()) { HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse(); string strpath = myResponse.ResponseUri.ToString(); WebClient mywebclient = new WebClient(); try { mywebclient.DownloadFile(strpath, savepath); } catch (Exception ex) { savepath = ex.ToString(); } } return savepath; }
OK,轉(zhuǎn)換完成!附效果圖一張:
總結(jié)
以上就是asp.net音頻轉(zhuǎn)換之.amr轉(zhuǎn).mp3(利用七牛轉(zhuǎn)換法)的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
ASP.NET Core 2.0 帶初始參數(shù)的中間件問題及解決方法
這篇文章主要介紹了ASP.NET Core 2.0 帶初始參數(shù)的中間件問題及解決方法,需要的朋友可以參考下2017-10-10ASP.NET Core應(yīng)用中與第三方IoC/DI框架的整合
ASP.NET Core應(yīng)用中,針對第三方DI框架的整合可以通過在定義Startup類型的ConfigureServices方法返回一個ServiceProvider來實現(xiàn)。但是并不是那么容易的,下面通過實例給大家分享一下2017-04-04asp.net 讀取xml文件里面的內(nèi)容,綁定到dropdownlist中
asp.net 讀取xml文件里面的內(nèi)容,綁定到dropdownlist中的實現(xiàn)代碼。2009-05-05詳解ASP.NET MVC 解析模板生成靜態(tài)頁(RazorEngine)
我們在很多項目開發(fā)中會常常用到頁面靜態(tài)化,本篇文章主要介紹了詳解ASP.NET MVC 解析模板生成靜態(tài)頁(RazorEngine) ,具有一定的參考價值,有興趣的可以了解一下。2017-03-03asp.net 因為數(shù)據(jù)庫正在使用的解決方法
因為數(shù)據(jù)庫正在使用,所以未能獲得對數(shù)據(jù)庫的排它訪問權(quán)?2009-02-02支持ASP.NET MVC、WebFroM的表單驗證框架ValidationSuar使用介紹
這篇文章主要介紹了支持ASP.NET MVC、WebFroM的表單驗證框架ValidationSuar使用介紹,本文詳細講解了使用步驟,并給出一個完整Demo下載,需要的朋友可以參考下2015-06-06