【问题标题】:How to load ogg file in c?如何在c中加载ogg文件?
【发布时间】:2015-06-21 12:19:19
【问题描述】:

我正在使用 openal 学习音频,并尝试将 ogg 文件加载到内存中,以便可以使用 openal 播放它们。我一直在寻找一个库来加载 ogg 文件,我发现最好的一个是this one,它没有依赖关系。但是文档很乱,我在网上找不到像样的教程示例。 我只想知道如何加载一个 ogg 并获取一些我可以实际发送到 openal 缓冲区的内容。

问:如果我有这个电话:

stb_vorbis_decode_filename(const char *filename, int *channels, int *sample_rate, short **output);

它应该解码“文件名”并将数据存储到“输出”中。所以我可以将它发送到 openal 对吗? 这不是缺乏研究,经过数小时的阅读,我无法真正了解它是如何工作的。如果有其他库可以轻松加载 ogg 文件,请告诉我。

谢谢!

【问题讨论】:

  • 好吧,为什么不试试那个命令。据我了解,nothings.org/stb_vorbis/samples/sample.c,它读取一个文件,“将其转换为短”(??我猜这意味着“16位样本”),并将指针更新为 i> 有了这个记忆。要知道这是否足以“获得我可以实际发送到 openal 缓冲区的东西”取决于 OpenAL 接受的内容。

标签: c openal oggvorbis


【解决方案1】:

你试过了吗?你得到了什么结果/错误?也许是这样的:

int channels;
int sample_rate;
short * output;
int rc = stb_vorbis_decode_filename("somefile.ogg", &channels, &sample_rate, &output);
if (rc == -1) fprintf(stderr, "oops\n");

【讨论】:

  • 我确实尝试过,但我不确定它是否给了我需要发送到 openal 的数据。无论如何,我通过A解决了它)实际上是在玩openal。 B) 使用 sdl_mixer 加载 ogg 文件。我正在使用 sdl 让窗口运行,所以 sdl_mixer 非常适合。我只是想避免依赖
猜你喜欢
  • 2023-04-08
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 2010-12-27
  • 2016-12-19
相关资源
最近更新 更多