问题标签 [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 回答
8030 浏览

c# - 阅读写作 WAV/RIFF 标签

我正在编写一个简单的录音实用程序,我还希望能够使用元数据标记生成的文件。很容易找到用 ID3 标签标记 MP3 文件的库,但我对 WAV 和可能的 FLAC 等无损编解码器更感兴趣。

据我了解,WAVE 文件实际上是 RIFF 文件类型的子集,它可以包含波形“块”和元数据“块”。

谁能指出我的库、规范或示例项目的方向,以帮助我弄清楚如何在 WAVE 文件中读取和写入这些 RIFF 标签?

还有人知道 FLAC 是否存在类似的标签,以及将元数据写入 FLAC 文件的任何好的资源吗?

0 投票
1 回答
3796 浏览

c# - 需要帮助以字节级别操作 WAV (RIFF) 文件

我正在用 C# 编写一个应用程序,它将记录音频文件 (*.wav) 并自动标记和命名它们。波形文件是 RIFF 文件(如 AVI),除了波形数据块外,它还可以包含元数据块。所以现在我试图弄清楚如何从录制的波形文件中读取和写入 RIFF 元数据。

我正在使用 NAudio 来记录文件,并在他们的论坛上以及SO 上询问读取和写入 RIFF 标签的方式。虽然我收到了许多好的答案,但没有一个解决方案可以像我想要的那样轻松地读取和写入 RIFF 块。

但更重要的是,我在处理字节级别的文件方面经验很少,并且认为这可能是一个学习的好机会。所以现在我想尝试编写自己的类,它可以读取 RIFF 文件并允许从文件读取和写入元数据。

我在 C# 中使用过流,但总是同时使用整个流。所以现在我有点迷失了,我必须逐字节考虑文件。具体来说,我将如何在文件中间删除或插入字节?我尝试通过 FileStream 将文件读入字节数组 (byte[]),如下面的代码所示。

我可以通过 Visual Studio 调试器看到前四个字节是文件的 RIFF 标头。 替代文字

但是,在执行更改其大小的操作(例如插入或删除值)时,数组是一件很痛苦的事情。所以我在想我可以然后将 byte[] 变成这样的 List。

这将使逐字节对文件的任何操作变得容易得多,但我担心我可能会丢失 System.IO 命名空间中的类之类的东西,这会使这一切变得更加容易。我在正确的轨道上,还是有更好的方法来做到这一点?我还应该提到,我不太关心性能,并且不想像this guy那样处理指针或不安全的代码块。

如果它有帮助,这里有一篇关于 RIFF/WAV 文件格式的好文章。

0 投票
1 回答
523 浏览

video - 压缩AVI视频流,同时盲目复制另一个流

我有一堆格式有点奇怪的视频文件。有一个常规的视频流,还有一个文本流,用于存储视频帧的精确时间戳(来自 GPS 同步的硬件时钟)。这是来自的示例输出ffmpeg

视频是未压缩的,所以我想压缩它。我成功地使用ffmpeg了那部分。问题是,我想将数据流#0.1 映射到输出文件中,完全不变。我一直在尝试和尝试,但我找不到任何方法来ffmpeg做到这一点。它只想处理音频、视频和字幕流,并且文本不是有效的字幕格式。制作视频的人刚刚退休,因此无法更改输入格式。有任何想法吗?

0 投票
2 回答
906 浏览

c# - 如何将 OGG 音频文件打包到 RIFF 容器中?

我有一个 ogg 音频文件和一些保存为字节序列的信息。我需要将此音频和信息打包在一个容器中,例如 RIFF 或其他容器。我正在寻找可以在.NET 下编写的解决方案。

0 投票
2 回答
18841 浏览

c - 如何从 WAV 样本数据中提取频率?

我正在用 c 开发一个应用程序来读取简单的 PCM WAV 文件。我的问题是,我应该如何解释数据块中的样本,以便我可以提取样本的频率?

给定一个 WAV 示例,原始数据如何表示频率。例如,这个数据块,24 17 1e f3,对于立体声,16 位,左声道样本是,0x1724 = 5924d,意味着 5924Hz?对于带有符号的样本或人类听不到的频率,这怎么可能呢?

0 投票
0 回答
84 浏览

.net - 显示如何加载 .ani 文件的可用源代码?

是否有可用的 .NET 库或源代码可以让我获取 .ani 文件的内部信息?大多数加载器只允许我将光标对象传递给其他接口,但我需要查询有关图标、时间等的光标对象。

(如果必须,我可以根据此规范编写自己的阅读器:http ://www.gdgsoft.com/anituner/help/aniformat.htm 。)

0 投票
1 回答
1298 浏览

ios - 在 iOS 上从 RIFF 容器读取 AAC 音频

我有一个文件,它是一个包含 3 个块的 RIFF 容器;RIFF 块具有“WAVE”标识符。第一个块是'fmt',第二个是'data',最后一个是'eink'(我自己的块)。因此该文件是由使用 directshow 的 c# 代码生成的。音频以 AAC 编码。所以我不想在 iOS 5.* 上播放存储在“数据”块中的音频。
我试图读取整个“数据”块并[initWithData:error:][1]AVAudioPlayer. 但它的工作方式似乎有所不同。
比我想象的要多,我可以尝试用这些字节制作自己的m4a文件并播放它,但是还有其他正确的方法吗?请建议我一些方法来调查它?在哪里读?或者其他方法。

0 投票
1 回答
286 浏览

java - 读取 RIFF 文件时出现 NegativeArraySizeException

我目前正在从事Java 多媒体 IO 项目并正在测试 RIFFInputStream,但在测试时我遇到了 NegativeArraySizeException;以下是调试控制台的输出;

当我第一次收到这个异常时,我下载了一个 RIFF 查看器,查看器列出了以下块;

所以发生的事情看起来是 RIFFList 构造函数代码在构建movi列表时遇到了麻烦。我想知道的是为什么它从流中接收到负数?

谢谢,利亚姆。

0 投票
2 回答
827 浏览

windows - 无法从原始流生成正确的 wav 文件

我捕获了原始音频数据流及其WAVEFORMATEXTENSIBLE结构。 WAVEFORMATEXTENSIBLE如下图所示:

WAVEFORMATEXTENSIBLE 结构

按照 wav 文件的标准,我尝试将原始位写入 wav 文件。我要做的是:

  1. 写“RIFF”。

  2. 写一个 DWORD。(文件大小 - sizeof("RIFF") - sizeof(DWORD))。

=== WaveFormat 块 ===

  1. 写“WAVEfmt”

  2. 写一个 DWORD。(WAVEFORMATEXTENSIBLE 结构的大小)

  3. 编写 WAVEFORMATEXTENSIBLE 结构。

===事实块===

  1. 写“事实”

  2. 写一个 DWORD。( 4 )

  3. 写一个 DWORD。(流中的样本数,应该是 sizeof(rawdata)*8/wBitsPerSample )。

=== 数据块 ===

  1. 写“数据”

  2. 写一个 DWORD(原始数据的大小)

  3. 写入原始数据。

从以上步骤得到wav文件后,我用媒体播放器播放了wav文件,没有声音,用大胆播放会给我一个失真的声音,我可以听到这是我想要的正确音频,但声音是被噪音扭曲。

原始数据可以在这里找到

我生成的wav文件在这里

这让我很困惑,因为当我使用相同的方法将 IEEE-float 数据转换为 wav 文件时,它工作得很好。

0 投票
1 回答
989 浏览

java - 用于从二进制写入 wav 文件的简单 Java 库

我应该在java中实现一个sinus-generator。作为输入,您给出频率、幅度和相位,作为输出,应该生成一个 .wav 文件。

我生成了一个像这样的鼻窦,但是我在创建一个 .wav 时遇到了很大的问题。我尝试了一些库,但尤其是标题让我头疼。

关于如何轻松实现这一点的任何想法?