final riffHeader = createRiffHeader(data.length, 1, 2, 44100, 176400, 4, 16);
用這方法取得檔頭後,將它跟音訊檔raw data一起結合成新的檔案吧!
final riffData = Uint8List(riffHeader.lengthInBytes + data.length);
riffData.setRange(0, riffHeader.lengthInBytes, riffHeader.buffer.asUint8List());
riffData.setRange(riffHeader.lengthInBytes, riffData.length, data);
存檔....成功!
趕快用作業系統的播放器測試看看!
「啪!」喇叭只發出了這樣簡單的一聲,連個雜訊都沒有。
怎麼回事?
原來,wave音檔的檔頭其實還要寫入各種關於這份raw data的各種屬性參數,「1, 2, 44100, 176400, 4, 16」這段數值就是這個參數。
簡單來說,它定義了「幾聲道」「音訊品質」等資料。而....這份數值並不是我所輸入的音訊檔raw data的資料,播放結果自然會失敗。
好啦!我要怎麼知道我的raw data真正的屬性呢?
(直接講答案:所有的手段在FlutterWeb版上都不適用啊!)