Flac
將缺少的長度標頭添加到由流創建的 flac 文件
正如我最近了解到的,通過管道編碼的 flac 數據到 STDOUT 創建的 flac 文件缺少某些元數據,特別是有關錄音長度的資訊。
是否可以在不解碼為 wav 並重新編碼數據的情況下追溯添加此數據(數據對於 wav 文件來說太大了,flac 會很樂意解碼為 wav,但隨後會拋出錯誤並拒絕重新編碼為 flac然後)?我知道錄音的確切長度,如果這有幫助的話。
對於好奇的人:當我將 7 天的錄音從 flac 解碼並重新編碼為 wav 並返回時,就會發生這種情況。
flac --decode test.flac flac 1.3.1, Copyright (C) 2000-2009 Josh Coalson, 2011-2014 Xiph.Org Foundation flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Type `flac' for details. test.flac: WARNING, cannot check MD5 signature since it was unset in the STREAMINFO done test.flac: ERROR: stream is too big to fit in a single WAVE file
現在我有一個在 VLC 中可以正常播放的 wav 文件,並且包含適當的長度資訊。嘗試重新編碼:
flac test.wav --best --output-name="test2.flac" flac 1.3.1, Copyright (C) 2000-2009 Josh Coalson, 2011-2014 Xiph.Org Foundation flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Type `flac' for details. test.wav: ERROR: 'data' chunk has size of 0
我找到的唯一解決方案是使用 sox 重新編碼整個事物:
sox test.flac test_full.flac --show-progress
這將獲取完整的錄音,對其進行解碼,然後將其重新編碼回flac。效率極低,但可以完成工作。如果有更好的解決方案可以避免 10 分鐘的編碼過程,請隨時添加另一個答案,我會接受那個答案。