c++ - 我可以在双簧管中添加和/或替换音频源而不重新启动音频流吗?
问题描述
我需要即时提取音频资产并将它们加载到时间线中进行播放。
我还需要渲染不同长度的资产文件,但我有一个想法,我明天要尝试一下,我认为如果有人有任何提示会很棒的话。
我一直在玩双簧管 RhythmGame代码,这是双簧管样本中最接近我想要做的事情。但是当我尝试动态添加或更改音频源时,它并不高兴。
这是双簧管可以做的事情,还是我必须为每组新文件循环打开和关闭音频流?
解决方案
您提出的建议绝对可以在不需要重新启动音频流的情况下完成。音频流只会在每个回调中请求 PCM 数据。提供 PCM 数据是您的应用程序的工作。
在 RhythmGame 示例中,压缩的音频文件使用该DataSource
对象解码到内存中。然后该Player
对象包装它DataSource
以通过set
方法控制播放。
如果您需要从时间线中的文件播放音频数据,我将创建一个新的 Timeline 类,该类从DataSource
s 复制音频数据的相关部分并将它们按顺序放置到缓冲区中。然后,您的音频流可以在每次回调时直接从该缓冲区读取。
推荐阅读
- python - XGBoost plot_importance() 中的绘图编号格式
- python - 当'按值传递'似乎仍然改变递归函数内的原始对象时
- javascript - 当我专注于文本字段时如何检查最大属性
- reactjs - 在评估 if else 语句时添加加载器
- android - 对传入的通知(来自任何应用程序)做出反应并播放声音
- rabbitmq - TCP 连接成功但 Erlang 分发失败。RabbitMQ
- scala - 无法解决 unapply
- powershell - PowerShell 中的 EF6 添加迁移,在 Visual Studio 之外
- angular - 如何在角度 6 中从另一个服务调用一项服务
- rest - 如何将数据从休息服务导入 Cassandra 集群?