我一直在嘗試vb.net中的wav joiner程序來加入wav文件,雖然它的某些時間工作正常,但通常結果wav文件無法播放。在窺視了原始的wav文件之後,我注意到數據子塊中'data'這個詞開始於偏移量38而不是36.這就是搞錯了假設偏移量爲36的木工程序。當我將該wav文件從audacity ,它將它固定起來,並且數據子句塊從36開始。所有程序都能夠正常播放原始文件,所以我想它是有效的。爲什麼在那些wav文件中的'data'之前有兩個額外的00字節值?爲什麼某些wav文件的數據子塊是2字節關閉的?
回答
這是一個猜測,但是你看看在偏移量爲38的文件中偏移量爲16的四字節數字嗎?data
?
fmt
子塊的大小是可變的,其大小是在相對於塊ID(在文件中爲零)的偏移16處的dword中指定的。該dword值是子塊其餘部分的大小,不包括ID字段和大小字段本身。我的猜測是,如果你看那裏,那些有兩個額外字節的人會說他們的fmt
子塊是18字節長而不是16(謝謝ooga爲了捕捉我的錯誤)。
https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
當有一個大小字段,總是使用它。如果文件格式會告訴你有多大的事情,則不需要跳轉到信任文件中的固定偏移量。如果它告訴你事物的大小,把它當作一個警告,說明大小可能會改變。
我相信它會是18而不是16(不是26而不是24)。 – ooga
@ooga完全正確,它是子塊的*餘數*的大小,不包括ID和大小字段。我不好,我會解決這個問題。謝謝! –
- 1. wav文件中實際包含的數據塊是什麼?
- 2. 爲什麼某些.wav文件無法在Firefox
- 3. WAV文件的其他子塊是什麼?
- 4. 爲什麼某些字符常量寬1字節,其他2字節寬?
- 5. 24位wav文件的數據塊是否有符號或無符號字節?
- 6. 在節點中,爲什麼某些模塊導出函數?
- 7. 這些文件描述符關閉的目的是什麼?
- 8. 什麼是關閉文件的需要?
- 9. 爲什麼我的文件關閉?
- 10. 爲什麼不關閉數據庫連接在最後的塊
- 11. WAV文件中的實際數據是什麼?
- 12. 讀取.wav文件時返回的數據究竟是什麼?
- 13. 這些字節是什麼?
- 14. 什麼是將mp3文件轉換爲wav文件的算法?
- 15. 如何關閉joomla中的某些頁面的組件塊
- 16. C# - 僞造數據加載* .wav文件的字節數組時
- 17. 如何訪問.wav文件的子塊數據?
- 18. Java - Wav文件 - 空字節?
- 19. TCP數據包:這些額外字節的含義是什麼?
- 20. 爲什麼運行hadoop時數據節點會關閉?
- 21. 爲什麼sqlite3_prepare_v2關閉數據庫?
- 22. 爲什麼關閉curl頭文件?
- 23. 如何將WAV/CAF文件的採樣數據轉換爲字節數組?
- 24. 如何找到wav文件的字節?
- 25. 爲什麼java中的字符大小是2個字節?
- 26. AVPlayer爲什麼不播放.wav文件
- 27. 是否有可能某些網絡數據包是空字節?
- 28. 基本的wav數據塊
- 29. 爲什麼短爲2字節對齊?
- 30. 爲什麼有些MySQL數據類型需要一些額外的字節?
在具有兩個額外字節的子塊中,子塊1的大小是否正確? https://ccrma.stanford.edu/courses/422/projects/WaveFormat/26而不是24?當你有一個尺寸的領域,你不需要假定尺寸總是相同的,它的存在是一個暗示,它可能不是。 –
是的你是對的,子塊大小是18而不是其他文件中的16。我只是在發佈後注意到另一篇關於此的帖子:http://stackoverflow.com/questions/19991405/how-can-i-detect-whether-a-wav-file-has-a-44-or-46-byte- header – nlehman