问题标签 [vorbis]

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 回答
38 浏览

format - 将页面插入 Ogg 文件时,是否有更好的方法来处理序列编号?

Ogg 比特流格式由连续页组成。每个页面都有一个带有元数据的标题(页面的校验和,页面的长度等)。一个这样的元数据是页面序列号,它从 0 开始表示流中的第一页,并为每个连续的页面增加 1(允许检查流中是否存在丢失的页面)。

Ogg 流中可以存在的一个页面是 Vorbis 评论页面。此页面包含一个Vorbis 评论块,通常用于编码媒体标签,如标题、艺术家或专辑。

在我正在进行的项目中,我需要能够将 Vorbis 注释添加到 Ogg 文件中。如果评论页面已经存在,编辑评论只需要更改包含它们的页面的元数据(长度、校验和等)。但是如果需要创建评论页面,则需要为其分配适当的序列号,这意味着它之后的每一页都必须增加其序列号。

有什么我遗漏的东西,还是处理添加页面的更好方法?还是更改每个序列号是插入页面的唯一方法?

0 投票
1 回答
2411 浏览

java - 如何解码 ogg vorbis 文件 java?

我开始使用 lwjgl 和 openal,所以我希望能够解码 ogg vorbis 文件并使用 openal 播放它。我的问题是:如何从 java 解码 ogg 文件,获取频率、pcm 数据等并将其发送到 openal 以便我可以播放?我找到了 jorbis来做这个,但它似乎太难用了,而且网上的教程有点乱。我在想像 alutLoadWavFromFile 之类的东西,但用于 ogg(和 java)。

谢谢!

编辑:好的,我会澄清我的问题。我想解码一个ogg文件。然后将数据发送到openal。但我不知道该怎么做的唯一部分是解码部分。

0 投票
1 回答
159 浏览

c - 如何确定 Vorbis 流的长度(以秒为单位)?

如何使用 libvorbis 和/或 libvorbisfile 确定 Ogg Vorbis 流的长度(以秒为单位)?

据我所知,vorbis_info结构中没有任何内容可以告诉我流的长度。

0 投票
0 回答
988 浏览

android - 在 Android 中将 OGG VORBIS 转换为 PCM

当我尝试使用从另一个 android-server 获得的 ogg CSD 数据配置 Android-client 解码器时(将 ogg 音频从 android-server 流式传输到 android-client),我遇到了以下崩溃。Android-server 剥离标头并发送两个 CSD 数据包。第一个数据包大小为 30,第二个数据包大小为 3763。

Docoder 初始化代码。

我想将 ogg 转换为 pcm。如何解决这个问题呢?

0 投票
1 回答
150 浏览

c - 一次播放 15 个音轨,延迟小于 50 毫秒?

总而言之,我的问题是:是否可以同时解码和播放 15 个有损压缩的音轨,延迟时间低于 50 毫秒且没有卡顿?

背景

我正在为我正在创建的游戏用纯 C 语言编写声音库。我希望一次播放多达 15 个音轨,延迟小于 50 毫秒。

截至目前,该库能够播放原始 PCM 文件(48000Hz 压缩的 16 位样本),并且可以轻松地以 45 毫秒的延迟一次播放 15 种声音,而不会出现卡顿且 CPU 使用率最低。这是在我相对较旧的 Intel Q9300 + SSD 机器上。

由于原始音频文件很大,我扩充了我的库以支持使用 opusfile 播放 OPUS 文件(https://mf4.xiph.org/jenkins/view/opus/job/opusfile-unix/ws/doc/html/index .html)。我希望我仍然能够一次播放 15 种声音,而音频文件不会占用 200MB 以上。我错了——我一次只能播放 3 或 4 首 OPUS 曲目,然后才能听到口吃和其他缓冲不足的症状。与原始 PCM 播放相比,CPU 使用率也大幅增加。

我还尝试使用 vorbisfile ( http://www.xiph.org/vorbis/doc/vorbisfile/ ) 包含 VORBIS 支持。我想也许即时解码 VORBIS 不会占用大量 CPU。VORBIS 比 OPUS 好一点——我可以一次播放 5 或 6 个声音,然后才能听到口吃(我猜 VORBIS 确实更容易解码)——但这仍然远不及播放原始 PCM 文件。

在我深入研究低级 libvorbis/libopus API 并研究其他音频压缩格式之前,是否可以同时解码和播放 15 个有损压缩的音轨,延迟低于 50 毫秒且没有卡顿在中低端台式电脑上?

如果有帮助,我的声音库目前大约每 15 毫秒调用一次函数,该函数基本上执行以下操作(为清楚起见,省略了错误处理和后处理):

提前感谢您的帮助!

0 投票
1 回答
625 浏览

shell - 从OGG文件中提取封面图像

我需要从 OGG 文件中提取封面。

我正在尝试解码存储在 METADATA_BLOCK_PICTURE 标记中的 base64 字符串,我通过以下命令得到:

Base64 解码工作正常,但生成的二进制文件既不像 JPG 也不像 PNG 那样打开。

示例文件:http ://regress78.com/1.ogg

0 投票
1 回答
969 浏览

c - 在 C 中使用 ALSA 和 Ogg vorbis 实现声音播放器

我正在尝试实现一个非常简单的 ogg 播放器。它基本上打开一个 ogg 文件,对其进行验证并通过 libvorbisfile 解码器运行到 ALSA PCM。问题是声音输出非常失真,滞后,并且需要相当多的想象力才能听到原始音乐文件。alsa 和 ogg 文件均以 44100Hz 采样率、两个通道和 16 位采样大小编码。

这是源代码:

任何帮助都会非常有帮助。

0 投票
1 回答
640 浏览

macos - ./configure 找不到头文件

我正在编译一个使用 SDL_mixer 播放.ogg文件的项目。但是,Mix_Init(MIX_INIT_OGG)失败并Mix_GetError()返回"Mixer not built with Ogg Vorbis support"。我使用的 SDL_mixer 版本是 1.2.12,通过 Homebrew 下载。

所以我下载了 SDL_mixer 的源代码(相同版本,1.2.12),并尝试使用 Ogg 支持构建它,即./configure --enable-music-ogg,但configure无法找到 Vorbis 头文件。这是它给出的输出:

我什至尝试传递--includedir=/usr/local/includeconfigure,但没有成功。我有 Vorbis 和 Ogg 头文件/usr/local/include,所以例如路径vorbisfile.h/usr/local/include/vorbis/vorbisfile.h. 我还尝试从头开始构建 libogg 和 libvorbis,但我仍然遇到相同的错误。我正在使用 OS X 10.11.1 测试版。

我究竟做错了什么?


编辑

输出brew ls sdl_mixer

0 投票
2 回答
4881 浏览

linux - 配置:错误:安装recordmydesktop-0.3.8.1时找不到libvorbis

我正在尝试在 rhel6.4 x86_64 下安装 recordmydesktop-0.3.8.1。在运行 ./configure 时,我收到以下错误消息: configure: error: Can't find libvorbis 但是我的 /usr/lib 目录下有 libvorbisfile.so.X 文件。头文件 codec.h、vorbisenc.h 和 vorbisfile.h 也存在于我的 /usr/include/vorbis 目录中。你能帮忙解决这个问题吗?

0 投票
1 回答
275 浏览

java - Android Voice Recorder 应用程序崩溃

我正在使用在 Eclipse 中构建的用于录音和使用 Giss.tv 服务器播放的应用程序。现在我已将该应用程序代码迁移到 Android Studio。在成功构建此应用程序之前,我遇到了很多错误。

现在,我的代码正在生成 apk,它正在模拟器和设备中打开。但是当我开始录制语音时,出现错误“不幸的是 xxx 已停止”并且应用程序被关闭。

当我检查 logcat 的错误和异常时,我得到以下异常-

我有来自 VorbisRecorder.java 的代码(https://github.com/vincentjames501/libvorbis-libogg-android/blob/master/src/org/xiph/vorbis/recorder/VorbisRecorder.java

我试图检查(第 511 行)的输入值

和值如下所示 -

“sampleRate”=44100,“numberOfChannels”=2,“质量”=0.2,“encodeFeed”= org.xiph.vorbis.recorder.VorbisRecorder$OutputStreamEncodeFeed@19b5c49c

所以我不明白为什么这里会抛出异常,即使值似乎有效。