问题标签 [riff]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
587 浏览

java - 从字节数组中提取 WAV 文件

发送 REST 请求后,服务器会返回一个非常长的字符串,如下所示:

RIFF\nt WAVEfmt ...(a lot of extra characters)

这应该是一个 .wav 文件。从那里我得到一个使用Java的字节数组:

byte[] audio = restResponse.getResponseBody().getBytes();

它返回如下内容:

[82, 73, 70, 70, 10, 116, 32, 0, 87, 65, 86, 69, 102, 109, 116, 32, 18...

之后,我将该数组写入文件:

FileUtils.writeByteArrayToFile(new File("C:/Users/user/Desktop/temp.wav"), audio);

问题是,我尝试了 2-3 个音频播放器 + 将原始数据导入 Audacity(尝试了不同的频率、频道……),但我听到的只是静态的。

0 投票
1 回答
265 浏览

go - 从 url 存储图像时如何编写 RIFF 块头?

我只是尝试从 url 下载 webp 图像,但是当我尝试处理存储的图像时发现了一些不同的东西。

如果我从浏览器下载图像,可以使用x/image/webp包对其进行解码,但是如果我使用存储图像http.Get()然后创建一个新文件然后创建io.Copy()图像,它会显示:

“缺少 RIFF 块头”

我假设我在使用 golang 代码存储它时需要编写一些 RIFF 块头。

这是网址IMG 网址

0 投票
0 回答
37 浏览

c++ - 对于 AIFF 格式的数据块中的字节,二进制补码如何工作?

我知道数据块应该保存音频样本。它在规范中说它们是互补的,但我无法弄清楚它在上下文中是如何工作的。有谁知道这对 AIFF 文件是如何工作的?

0 投票
4 回答
137 浏览

c++ - 处理 .wav 文件时输出失真

我想处理一个 .wav 文件,例如降低幅度;当我使用以下代码时,输​​出会失真,这并不令人愉快。

如何修复失真?

0 投票
1 回答
166 浏览

audio - PCM / WAVE 文件样本到实际声音/频率

我开始接触数字音频和波形文件格式/pcm,我想我理解了。但我不明白你如何从文件中的值转换为“实际”音频的部分获得频率。并且无法在互联网上找到它。

所以在波形文件中我的采样率有点深,现在我想从中得到一个准确的频率。

我将十六进制值修改为完全相同(肯定是在标题之后),预计会听到稳定的音调。但它没有用。所以我的另一个结论是我必须调制实际的“波”。如果我有 8k hz 的采样率,我可以通过在每秒 8k 次所选位深度的范围内选择一个值来定义“强度”。并且必须像 Wave 一样“绘制”以获得正弦音,如果我想让它更响亮,我会用更高的值绘制相同的东西,例如 0 到 256 的 8 位。

立体声是如何保存的?第一个左声道,然后是右声道,还是像一个左声道采样右声道?

如果文件中的信息字节多于数据块中给出的信息,会发生什么?我觉得音频在定义的值之后就停止了,对吗?

抱歉英语不是我的母语希望你能理解

0 投票
1 回答
586 浏览

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

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

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

0 投票
1 回答
501 浏览

c# - 如何使用 PCM 数据手动编写 .wav 文件?

我一直在关注这些(12)的教程来尝试构建一个 .wav 文件。但是,我似乎无法让它工作,因为 wav 文件将正确打开但被列为 0 秒并且不播放任何内容。

代码(这很糟糕,因为它只是一个尝试让它工作的测试):

是代码有问题,比如我如何尝试写入字节,还是字节本身有问题?

0 投票
1 回答
1738 浏览

wav - RIFF/Wav 标头中的“LIST”块是什么?

我正在编写一个 wav 播放器,我正在使用这个文件格式规范:http ://soundfile.sapp.org/doc/WaveFormat/ 。

如您所见,它期望:

  1. 一个初始的“Riff Chunk”(告诉我们这是 wav 文件还是其他 RIFF 文件类型)
  2. 后面是“格式”块(它告诉我们比特率和通道数等信息)。
  3. 后跟一个“数据”块,其中包含所有音频数据。

我有一个音频文件,它在格式块和数据块之间有一个“列表”块,当我对文件进行十六进制编辑时,您可以直观地看到:

在此处输入图像描述

这个 LIST 块是什么,它是某些标准化文件格式的一部分,是否有某个地方有解析它的信息?

0 投票
0 回答
38 浏览

c++ - 如何正确读取所有 wav 文件的正确 Riff Wav fmt 标头数据

我有一个程序可以从使用 RIFF wav fmt 的 .wav 文件中读取诸如通道数等标题信息。我想让它与 riff wav fmt 之后的任何 .wav 扩展文件兼容。这是我到目前为止的代码。

WaveReader.h:

WaveReader.cpp

我在使用此代码时遇到的问题是它并不总是自己读取每个 .wav 文件的正确信息,我必须使用 fseek 函数来定制 fread 函数以从每个文件中读取正确的标头数据具体文件。

如果我不使用 fseek 函数,程序会从大多数 .wav 文件中读取正确的数据,但少数除外。

有没有一种方法我不必使用 fseek 函数来使该程序与任何 RIFF wav fmt 文件兼容?

编辑:我使用在线 .wav 文件阅读器手动选择了 fseek 偏移量,然后我使用 Visual Studio 查看了标头数据的偏移量。

在上下文中,根据在线 .wav 文件阅读器,其中一个文件的通道数为 2,该程序的通道数为 5200,BitsPerSample 等于 2。因此,使用 fseek(InFile, 12, SEEK_SET)标题数据后读取的数据是正确的。

0 投票
1 回答
195 浏览

c++ - 解析 Riff wav 标头

我有一个程序应该读取所​​有 wav 文件的元数据。我使用了以下解析的 struct 和 fread 函数。

这段代码遇到的问题是,对于一些 .wav RIFF 标头 fmt 文件,即使在解析如下所示的结构之后,读取的元数据也不正确,如果我在每个读取函数之间使用 fseek 函数会有所帮助。

我使用多个结构的原因是为了确保正确读取头文件的所有数据,因为尽管大多数 wav 文件头数据是有序的,但这有时不是真的。