1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          【音樂拼接】WAV格式

          來源:互聯網轉載 時間:2023-08-16 17:06:43

          預備知識

          必備基礎知識用4個字節 表示一個整數 每個字節8位 字節可以用無符號整數(十進制)來表示(0-255) 假設有如下4個字節 194 021 001 000 分別轉換成16進制為 C2 15 01 00 高位在前 于是如下 15C2 0001 再轉 如下 000115C2 (這個就是4字節表示的整數對應的16進制) 轉成10進制如下 71106======================================================================================開始 真正內容 wav文件 = 文件頭 + 數據體文件頭 44個字節前12個字節用來說明文件是哪種類型 (如下字節)082 073 070 070 202 043 000 000 087 065 086 069 ------ a.wav 082 073 070 070 234 046 000 000 087 065 086 069 ------ b.wav 082 073 070 070 120 048 000 000 087 065 086 069 ------ c.wav 082 073 070 070 194 021 001 000 087 065 086 069 ------ d.wav這12個字節里面第5-8個字節是不一樣的,其他一樣,這四個字節就表示一個整數,該整數為:從下一個地址開始到文件尾的總字節數。 也就是說,前8個字節加上該整數就等于本wav文件總字節數,不信可以自己算算,百發百中。。。剩下 32 個字節分為兩個部分。 12-35 字節用來說明文件結構 36-43 字節用來說明數據大小 44到最后就是數據體剛才分析到前12個字節,繼續 13-16字節 表示 fmt ,波形格式標志102 109 116 032 ------ a.wav 102 109 116 032 ------ b.wav 102 109 116 032 ------ c.wav 102 109 116 032 ------ d.wav 可以看到都一樣17-20字節 過濾字節(一般為00000010H) 016 000 000 000 ------ a.wav 016 000 000 000 ------ b.wav 016 000 000 000 ------ c.wav 016 000 000 000 ------ d.wav 可以看到都一樣21-22字節 整數 格式種類(值為1時,表示數據為線性PCM編碼) 001 000 ------ a.wav 001 000 ------ b.wav 001 000 ------ c.wav 001 000 ------ d.wav 也是一樣23-24字節 整數 通道數,單聲道為1,雙聲道為2 001 000 ------ a.wav 001 000 ------ b.wav 001 000 ------ c.wav 001 000 ------ d.wav 表示都是單聲道,特意用格式工廠轉了一個2聲道的,變成 002 000 正確25-28 采樣頻率 034 086 000 000 ------ a.wav 十進制 22050 034 086 000 000 ------ b.wav 十進制 22050 034 086 000 000 ------ c.wav 十進制 22050 034 086 000 000 ------ d.wav 十進制 22050 4個文件都一樣29-32 每次采樣的數據塊大小 它跟下面的采樣精度有關 034 086 000 000 ------ a.wav 十進制 22050 034 086 000 000 ------ b.wav 十進制 22050 034 086 000 000 ------ c.wav 十進制 22050 068 172 000 000 ------ d.wav 十進制 44100 注意不同的地方33-34 整數 它 = 通道數 * 采樣精度 / 8 001 000 ------ a.wav 001 000 ------ b.wav 001 000 ------ c.wav 002 000 ------ d.wav35-36 整數 采樣精度是多少位 008 000 ------ a.wav 8位 008 000 ------ b.wav 8位 008 000 ------ c.wav 8位 016 000 ------ d.wav 16位37-40 表示“data”或者“LIST”四個字符,data表示單個音樂,LIST表示合成?或許是這樣,因為我的d.wav 是在格式工廠里用 abc合成的 100 097 116 097 ------ a.wav 100 097 116 097 ------ b.wav 100 097 116 097 ------ c.wav 076 073 083 084 ------ d.wav41-44 整數 數據體長度(字節數)166 043 000 000 ------ a.wav 十進制11174 已檢驗正確 197 046 000 000 ------ b.wav 十進制11973 已檢驗差一個字節 基本正確 083 048 000 000 ------ c.wav 十進制12371 已檢驗差一個字節 基本正確 026 000 000 000 ------ d.wav 十進制26 嚴重錯誤 格式工廠轉換問題


          程序代碼 using System; using System.Collections.Generic; using System.IO; using System.Text;namespace Wav {class Program{static void Main(string[] args){List<string> ls = new List<string> {@"C:\Users\Administrator\Desktop\b.wav",@"C:\Users\Administrator\Desktop\c.wav",@"C:\Users\Administrator\Desktop\a.wav",@"C:\Users\Administrator\Desktop\out.wav"};Get_wav(ls);}static void Get_wav(List<string> l){List<string> ls = l;int n = ls.Count;byte[] OUT = File_2_byte(ls[0]);for (int i = 0; i < n; i++){if (i == n - 2){using (StreamWriter sw = new StreamWriter(ls[i + 1], false, Encoding.GetEncoding(1252))){sw.Write(Encoding.GetEncoding(1252).GetString(OUT));}return;}byte[] tmp = File_2_byte(ls[i + 1]);OUT = Save_Wav(OUT, tmp);}}static byte[] File_2_byte(string url){long l = new FileInfo(url).Length;byte[] b = new byte[l];new FileStream(url, FileMode.Open).Read(b, 0, (int)l);return b;}static byte[] Save_Wav(byte[] buffer1, byte[] buffer2){long len1 = buffer1.Length;long len2 = buffer2.Length;byte[] Head1 = Get_small_byte(buffer1, 0, 44);byte[] Head2 = Get_small_byte(buffer2, 0, 44);byte[] Data1 = Get_small_byte(buffer1, 44, len1);byte[] Data2 = Get_small_byte(buffer2, 44, len2);byte[] DATA = Combine_2_byte(Data1, Data2);long L = DATA.Length + 44;byte[] HEAD = new byte[44];Get_small_byte2(ref HEAD, 0, Head1, 0, 4); //0-3Get_small_byte2(ref HEAD, 4, Get_4_byte(L - 8), 0, 4); //4-7Get_small_byte2(ref HEAD, 8, Head1, 8, 36); //8-35Get_small_byte2(ref HEAD, 36, Head1, 36, 40); //36-39Get_small_byte2(ref HEAD, 40, Get_4_byte(DATA.Length), 0, 4); //40-43return Combine_2_byte(HEAD, DATA);}static byte[] Combine_2_byte(byte[] a , byte[] b){long la = a.Length;long lb = b.Length;long lc = la + lb;byte[] c = new byte[lc];for(int i =0;i< la; i++){c[i] = a[i];}for (int i = 0; i < lb; i++){c[i+la] = b[i];}return c;}static byte[] Get_small_byte(byte[] a,long start,long end)//[start,end){long la = a.Length;long lc = end - start;byte[] c = new byte[lc];for(long i = start;i< end; i++){c[i - start] = a[i];}return c;}static void Get_small_byte2(ref byte[] HEAD, long f,byte[] a, long start, long end){long la = a.Length;for (long i = start; i < end; i++){HEAD[i - start + f] = a[i];}}static byte[] Get_4_byte(long a){byte[] b = new byte[4];b = BitConverter.GetBytes((int)a);return b;}} }


          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          699美元換成人民幣多少?當前美元對人民幣的匯率是1美元=7.0942人民幣1人民幣=0.141美元699美元=4958.8458人民幣參考2019年4月21日的匯率,699美元=4685.5368人民幣;溫馨提示:匯率波動699美元合計人民幣多少?]首先,699是iPhone8的價格,對應中國銀行5888的價格。X是999美元,相當于8388元。關稅10%,增值稅17%。699*6.54*1.1...

          安裝系統時出現filename546?怎么解決?重裝系統過程中出現ghost:flie name(546)解決方案:1.如果是用光盤安裝的,請再次更換安裝光盤。如果它仍然沒有 不要更換安裝系統光盤,請更換光盤驅動器,這可能是由于光盤劃傷和損壞或光盤驅動器有問題造成的。版本問題。制作鏡像的版本高,還原鏡像的ghost版本低。3.下載的iso或gho格式的系統是否完整一致,不完整或損壞的系統肯定無法安...

          有沒有好用的win10系統激活?1. 右擊桌面左下角的「開始」菜單2。單擊-> Windows PowerShell(管理員)3。輸入代碼slmgr/SKMS kms。03k.Org->輸入->在彈出的對話框中,單擊->確定4。輸入代碼slmgr/ATO->輸入->以提醒您計算機已成功激活。點擊->確定dk是什么意思???DK可以解釋為軟件域名的輸入代碼DK,也可以解釋為...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>