如何将音频流式传输到 OpenAL Sources 中?

2024-01-18

我刚刚开始使用 OpenAL。

我已成功将 WAV 文件加载到其中,并成功播放它们。这很容易。

现在,我需要能够将音乐流式传输到 OpenAL 中,而不是将整个文件加载到其中。虽然这对于声音效果等有好处,但正如您可能知道的那样,对于音乐来说可能非常危险。

问题是,我似乎无法在谷歌上找到与此相关的任何内容。虽然我找到了一些与流 OGG 文件相关的示例,但我更愿意制作一个支持所有音乐文件的系统。

据我了解,OpenAL 应该为此内置函数。但我找不到他们。

所以,我的问题是,如何将音频流式传输到 OpenAL 的缓冲区中,同时删除已播放的部分并导入尚未播放的部分?

如果这是一个无知的问题,我深表歉意。


Use alSourceQueueBuffers()对要由源直接连续播放的缓冲区进行排队。在播放过程中,使用alGetSourcei()和这个结合AL_BUFFERS_PROCESSED获取已完全播放并准备重用的缓冲区数量。alSourceUnqueueBuffers()将为您将这些缓冲区从队列中弹出,以便您可以用新数据填充它们并再次将它们排队。

基本上,您将在一个线程中循环:休眠一小段时间,测试新的可用缓冲区,用数据填充它们,将它们排队并再次休眠。

SFML 在其中实现了这一点声音流类 https://github.com/LaurentGomila/SFML/blob/master/src/SFML/Audio/SoundStream.cpp(C++),喜欢的可以看一下作为参考。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将音频流式传输到 OpenAL Sources 中? 的相关文章

  • @Nullable 和 SonarQube “有条件执行的块应该可达”警告

    包有以下package info java ParametersAreNonnullByDefault package foo import javax annotation ParametersAreNonnullByDefault 类有
  • SpringMVC 和 Hibernate:CannotCreateTransactionException:无法打开 Hibernate 会话进行事务;

    我正在尝试设置并Spring MVC 休眠项目 但它让我发疯 我还会考虑订购 xml 配置文件的建议 我有以下文件 web xml
  • 涉及数学的方法给出与计算器不同的答案

    我是java新手 所以请耐心等待 我试图从比赛总数中获得胜利的百分比 但我正在做的事情还很遥远 我获取百分比的方法如下 public double winPercentage int wins int total return wins t
  • Java泛型类型要么扩展要么是父类

    我正在寻找一些如下所示的代码 public class Parent
  • 通过蓝牙将字符串从作为客户端的 PC 发送到作为服务器的移动设备

    我需要通过蓝牙将字符串从 PC 传输到 Android 移动设备的帮助 Android 移动设备应充当服务器并在设备屏幕上显示字符串消息 作为客户端的 PC 应该将字符串发送到移动设备 我希望服务器对提取的字符串 通过蓝牙传输 做出反应 这
  • 可以使用注解进行代码注入吗?

    我意识到这可能是一个已经被提出和回答的问题 但请耐心等待 我想知道是否可以使用注释将代码注入到类编译时 典型的示例是为对象的成员生成 getter 和 setter 这并不完全是我所需要的 但它可以说明基本思想 现在在互联网上我得到的基本答
  • 使用 Windows 锁定屏幕后删除 Kerberos 缓存票证

    无论如何 有没有办法阻止 Kerberos 缓存的票证在 Windows 进入锁定屏幕后被删除 首次登录 Windows 时 klist exe 显示 2 个缓存票证 但是 发生 Windows 锁屏事件后 klist exe 显示 0 个
  • Java setLocation() 事故

    我正处于创建一个程序来操作员工 客户系统的开始阶段 现在我刚刚创建了登录 GUI 但我遇到了一些问题 setLocation 方法 我将其设置为 250 250 但这使我的 GUI 高度变得非常疯狂 如果有人能够解决这个问题 我的代码如下
  • Java DocumentBuilder - XML 文件中的缩进错误

    我尝试使用 DocumentBuilder 用 Ja va 编写一个简单的 XML 文件 我期望 XML 文件如下所示
  • 使用 GSON 将 JSON 字符串转换为 Java 对象

    我正在尝试将 json 解析为 java 根据 jsonlint com 我有以下字符串 该字符串是有效的 json private final static String LOC JSON lat1 39 737567 lat2 32 7
  • Java 堆分析因 SIGABRT 崩溃

    我正在尝试分析由 C 编写的方法分配并插入的本机内存JVM通过JNI 我安装了 valgrind version valgrind 3 13 0 并尝试使用以下选项运行 JVM valgrind tool massif massif out
  • 为每个键使用主题中的最新值

    我有一个 Kafka 生产者 它正在以高速率生成消息 消息键是用户名 值是他在游戏中的当前分数 Kafka消费者处理消费消息的速度相对较慢 在这里 我的要求是显示最新的分数并避免显示陈旧的数据 但代价是某些分数可能永远不会显示 本质上 对于
  • Eclipse java 断点 - 目的是什么?

    我正在学习 Android 教程 刚刚进入调试部分 我想知道断点的用途是什么 我还不能告诉 它实际上停止了应用程序 以便我可以确定它运行到该点 或者我可以设置多个断点并将它们用作标记来从断点到断点检查 停止和运行 我的代码 断点是执行停止的
  • 从 Apache Kafka 中的主题删除消息

    所以我是 Apache Kafka 的新手 我正在尝试创建一个简单的应用程序 以便我可以更好地理解 API 我知道这个问题在这里被问了很多 但是如何清除存储在主题上的消息 记录 我看到的大多数答案都说要更改消息保留时间或删除并重新创建主题
  • 在硬件级别模拟按键 - Windows

    我正在寻找一种语言或库 使我能够在最大可能的水平上模拟击键 而无需实际按下按键 我对击键级别的具体衡量标准是 当我的计算机已经运行按键侦听器 例如鼠标键和粘滞键 时 它是否会产生与物理按键相同的输出 我尝试过很多击键模拟的方法 java A
  • Android:需要记录麦克风输入

    有没有办法在实时播放 预览过程中记录 Android 中的麦克风输入 我尝试使用AudioRecord and AudioTrack这样做 但问题是我的设备无法播放录制的音频文件 实际上 任何Android播放器应用程序都无法播放录制的音频
  • Android 调整图片大小

    我的图像存储在 SD 卡上 每个大小约为 4MB 我想调整每个的大小 而不是将其设置为 ImageView 但我不能使用BitmapFactory decodeFile path 因为异常 java lang OutOfMemoryErro
  • java中的Anagram算法

    我想做字谜算法但是 这段代码不起作用 我的错在哪里 例如 des 和 sed 是字谜 但输出不是字谜 同时我必须使用字符串方法 不是数组 public static boolean isAnagram String s1 String s2
  • 在 Android 版 ORMLite 中加入类会引发 SQL 异常:找不到外部类,反之亦然

    我正在尝试使用 QueryBuilder 为两个不同的类创建一个联接查询 一个Product类和一个Coupon类 引用 Product 属性 storeId public class Coupon DatabaseField column
  • Java中不同格式的字符串解析为日期

    我想转换String to Date以不同的格式 例如 我从用户那里得到 String fromDate 19 05 2009 i e dd MM yyyy format 我想转换这个fromDate作为日期对象 yyyy MM dd fo

随机推荐

  • mysql 按字母顺序排列

    我正在尝试按字母顺序对 mysql 数据进行排序 一个 乙 C D 当我点击 B 时 此查询运行 按 b 从用户顺序中选择名称 但结果显示以 a 或 c 或 d 开头的所有记录 我想显示仅以 b 开头的记录 感谢帮助 我想显示仅以 b 开头
  • “git revert”中的“他们”和“我们”是谁?

    我无法理解谁us and them在这些冲突中git revert 所以我真的不知道这里发生了什么 git revert some commit hash Then git status显示以下冲突 deleted by them path
  • 编写编译器……什么是对的,什么是错的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用干净或自定义配置文件启动 VSC

    通常 VSC 将设置和用户数据存储在 appdata Code 以及扩展名 userprofile vscode 有没有办法告诉新实例加载其他一些配置文件或从 空白画布 开始 就像您可以使用 Firefox 一样 no remote pro
  • 使用 SFML 使自定义类型可绘制

    我最近开始使用 SFML 我决定作为一种学习经验 我将使用它制作一个 pong 克隆 我定义了一个名为Ball绘制使用 SFML 绘制RectangleShape 当我尝试使用以下命令将这个自定义类型绘制到屏幕上时window draw 但
  • Rust 基准测试已优化

    我正在尝试对从 Rust 哈希映射中获取密钥进行基准测试 我有以下基准 bench fn rust get b mut Bencher let hash keys get random hash
  • Qt 去除边距

    我目前正在使用 QMainWindow 小部件 我想删除内部小部件周围的边距 我成功删除了窗口边框的边距 但没有删除窗口内小部件的边距 这是我的代码 例如 this gt mainWidget new QWidget this this g
  • 如何使用Javascript切片提取字符串的第一个和最后一个字母?

    如何使用 JavaScriptslice提取字符串的第一个和最后一个字母 Eg Hello World 我需要的结果是 dH 以下是我的 jsfiddle http jsfiddle net vSAs8 http jsfiddle net
  • log4net AdoNetAppender 截断消息文本

    我遇到一个问题 无论我做什么 我的消息字段都会被截断为大约 42k 这是一个简短的片段来说明我的配置
  • R - 匹配不同长度矩阵的行和列

    我现在的问题如下 我有一个有向 1 模式边缘列表 代表在某一年参与联合项目的演员对 可能如下所示 projektleader projectpartner year A B 2005 A C 2000 B A 2002 现在我只需要某一特定
  • 如何将 UITextField 中用作 leftView 的 UILabel 与 textField 的文本垂直对齐?

    我正在使用一个UILabel as the leftView of a UITextField 问题是文本字段的文本高于标签的文本 这是我到目前为止使用过的代码 UILabel startsWith UILabel alloc init s
  • React-Navigation:使用/更改带有 Redux 状态的标题标题

    是否可以访问 React Navigation 的标题标题中的整个 Redux 状态 The 官方文档 https reactnavigation org docs intro headers表示导航对应的状态是可访问的 static na
  • 交叉编译中的CMake CMAKE_AUTOMOC

    我有以下问题 我尝试使用 CMake 中构建的本机机制进行交叉编译 我准备了以下 toolchain cmake 文件 set CMAKE SYSTEM NAME Linux set CMAKE SYSTEM PROCESSOR arm s
  • 具有复选框行为的自定义列表视图,如 Gmail 应用程序

    我在这里阅读了很多有关列表视图和复选框的帖子 他们中的很多人都使用 CheckedTextView 或扩展它 我想实现一个带有复选框行为的自定义列表视图 就像在 android 邮件应用程序 Gingerbread ICS 上一样 只有复选
  • spring security 2.0.7 和 spring 2.5 的登录表单问题

    您好 我正在尝试在我的应用程序上放置一个登录页面 我的login jsp是
  • 弱引用的其他用途?

    我知道弱引用是一个很好的选择记忆 http en wikipedia org wiki Memoization潜在的大量数据 以及维基百科关于弱引用的文章 http en wikipedia org wiki Weak reference仅
  • 如何写入来自 Firebase 的数据以快速存储?

    首先 我正在使用 React Native 我正在从 Firebase 获取数据并希望快速写入存储 通过 Redux 但这不起作用 您可以在下面找到我的所有代码 功能 async getTumData uid const selectedG
  • 如果会话因无活动而过期,则注销并重定向到登录页面

    我正在尝试使用 Flask 更新一个网站 其中用户拥有帐户并且能够登录 如果超过 10 分钟没有活动 我想让用户会话过期并注销 并将用户重定向到登录页面 我想更新它 app before request下面是我的代码 如何检查登录时间并检查
  • 无法使用mockito模拟私有方法

    我正在尝试使用 power mockito 来模拟私有方法 读完这篇文章后我得到了一些想法 并且遵循了相同的结构 example https stackoverflow com questions 28121177 mock private
  • 如何将音频流式传输到 OpenAL Sources 中?

    我刚刚开始使用 OpenAL 我已成功将 WAV 文件加载到其中 并成功播放它们 这很容易 现在 我需要能够将音乐流式传输到 OpenAL 中 而不是将整个文件加载到其中 虽然这对于声音效果等有好处 但正如您可能知道的那样 对于音乐来说可能