C++ 是否有标记.wav文件并在其中写入时间的方法?

C++ 是否有标记.wav文件并在其中写入时间的方法?,c++,audio,metadata,wav,C++,Audio,Metadata,Wav,我想在我的每个.wav文件中添加一个时间标签。此标记将显示文件何时开始,如果可能,还将显示结束时间。时间可能与unix时代有关。我将如何着手做这件事,或者甚至可以做到这一点 谢谢 -Josh我不确定是否有一种通用的方法(如jpeg中的exif标记),但如果其他方法都失败了,您可以尝试使用 这是一种将信息编码成文件的方法,尤其是图片和音频文件,只是略微改变内容。但我不知道将该消息编码/解码为文件会有多费力。来源: WAVE文件是许多不同类型块的集合。。。其他可选块包括定义提示点、列出仪器参数、存储

我想在我的每个.wav文件中添加一个时间标签。此标记将显示文件何时开始,如果可能,还将显示结束时间。时间可能与unix时代有关。我将如何着手做这件事,或者甚至可以做到这一点

谢谢


-Josh

我不确定是否有一种通用的方法(如jpeg中的exif标记),但如果其他方法都失败了,您可以尝试使用

这是一种将信息编码成文件的方法,尤其是图片和音频文件,只是略微改变内容。但我不知道将该消息编码/解码为文件会有多费力。

来源:

WAVE文件是许多不同类型块的集合。。。其他可选块包括定义提示点、列出仪器参数、存储特定于应用程序的信息等

您可以为您的信息添加自己的块,但只有您的工具才能读写它。您可能会发现其他软件的互操作性问题,这些软件没有正确地忽略未知区块,或者为区块选择了与您相同的ID。块ID是4个字节,因此在实践中应该有足够的空间来避免这个问题,即使在最严格的意义上解释上述文档(“4个ASCII字节”)(“4个可打印ASCII字符字节”)


相反,您可以在wave文件旁边保留一个单独的文件,其中包含您的信息。不会出现互操作性问题,但用户需要将文件放在一起。

WAV文件支持有限的、基于文本的标记,这可能对您很合适。您可以在INFO chunk()中指定用户定义的字段,这可能适合您的需要,但没有比在MP3中使用ID3标记或在FLAC中使用Vorbis注释更简单的方法

我不知道有哪一个库可以使这项工作更容易,因为我不使用WAV,但可能对您有用,或者您可以通过将文件读入字节流,然后使用规范中的信息自己处理标头来操作标头:

否则,对于一个更简单的时间,您可能希望将wav文件转换为FLAC,然后将字段写到FLAC标签:FLACC C和C++ API文档:

wav文件是文件,这些文件被设计成允许在不中断其他程序的文件的情况下添加任意数据块。(只要您选择的块标记不与其他任何人冲突)

如果您使用的是Windows,则有一些函数可帮助您操作此类文件,例如