gpt4 book ai didi

ios - 如何从 Swift 中的 wav 文件中删除 riff 头?

转载 作者:行者123 更新时间:2023-11-29 05:09:08 24 4
gpt4 key购买 nike

我只想拥有 .wav 文件的数据 block 并排除所有其他 block ,即 riff header 。

        let voiceData = try? Data(contentsOf: soundUrl).advanced(by: 44)

我确实尝试过这个,但由于某种原因,在实际音频之前仍然留下了一些包袱。谁能帮我解决这个问题。是否有一种有效的方法来读取 .wav 文件并且仅包含数据部分?

最佳答案

首先,您确定这实际上是一个 WAV 文件吗? WAV 通常有 44 字节的 header 。您为什么认为存在“一些包袱”?您如何确定这一点?

你当然可以直接解析RIFF格式。最简单(最草率)的方法是向下扫描,直到找到字节“数据”(0x64 61 74 61)。接下来的 4 个字节是长度(采用小端格式,如果您只想读到最后,可以跳过),后面是您想要的实际数据。

通过range(of:)查找data字节

let dataBytes = Data([0x64, 0x61, 0x74, 0x61])
if let dataRange = riff.range(of: dataBytes) {
let start = dataRange.endIndex + 4 // Skip over length bytes
let samples = riff[start...] // read the rest of the bytes
// use samples
}

关于ios - 如何从 Swift 中的 wav 文件中删除 riff 头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59850002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com