Flac

將缺少的長度標頭添加到由流創建的 flac 文件

  • June 14, 2018

正如我最近了解到的,通過管道編碼的 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 分鐘的編碼過程,請隨時添加另一個答案,我會接受那個答案。

引用自:https://unix.stackexchange.com/questions/402070