簡體   English   中英

是否可以/如何以不是8的倍數的樣本大小來編碼WAV文件

[英]Is it possible/how to encode a WAV file with a sample size that is not a multiple of 8

我正在嘗試從Arduino Uno的模擬輸入中編碼WAV文件。 analogRead(pinNumber)函數返回0到1023之間的值。然后需要將此10位值編碼到WAV文件中。 有一個函數map(val, inMin, inMax, outMin, outMax)可以將其調整為完整的16位值(或8位值)。 但是理想情況下,如果我可以將WAV文件的樣本大小簡單地設置為10位,那將是完美的。 我知道如何將其寫入標頭,但我不知道它是否會真正起作用,或者如果它不是8位的倍數,則如何實際寫入數據。

如果可能的話,我假設它需要一些花哨的按位運算,但是我不知道如何使它起作用。

任何應用程序都不可能讀取帶有打包的10位樣本的wave文件。 幾乎沒有程序會讀取打包的24位。 可能是因為這樣繁瑣的工作才能將其解壓縮為32位。

最好的選擇是將其存儲為16位帶符號。 這個問題提到了調用映射函數,該函數可能會將10位音頻重新縮放為16位音頻。 更好的解決方案是將10位樣本向上移位,以使它們左對齊,而將較低的6位保留為零。 這樣做有兩個好處。 首先,重新縮放不會(顯然)不會提高音頻質量,只會增加一些額外的量化噪聲。 其次,如果您想將其讀回為10位音頻,則可以將其向下移或其他任何方式而不會降低精度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM