swift - AVAudioSourceNode 如何设置设置格式
问题描述
我正在使用新的 AVAudioSourceNode 提供要通过我的音频接口播放的样本流。
但是我发现 AVAudioSourceNode 正在选择它自己的格式设置。
engine.connect(srcNode, to: engine.mainMixerNode, format: stimulusFormat)
我使用上面的代码行使用“stimulusFormat”格式将我的源节点连接到我的主混音器我已使用以下格式设置此格式:
let stimulusFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32,
sampleRate: Double(sampleRate),
channels: 1,
interleaved: format.isInterleaved)
(使用 interleaved 参数查询输出期望看到的内容)。但是,每当我查询 srcNode (AVAudioSourceNode) 的格式时,控制台都会返回
<AVAudioFormat 0x600002131810: 2 ch, 44100 Hz, Float32, non-inter>
很明显,流格式没有在代码的连接行中设置。我也尝试过更改首选采样率,但这仍然不会更改 AVSourceNode 采样率。我的音频引擎中的其他所有东西都以 48000Hz 运行,所以我不确定它是从哪里得到这个数字的。
try AVAudioSession.sharedInstance().setCategory(.playAndRecord)
try AVAudioSession.sharedInstance().setPreferredSampleRate(Double(sampleRate))
谁能建议一种定义流格式的方法?
解决方案
尝试
engine.connect(srcNode, to: engine.mainMixerNode, format: srcNode.inputFormat(forBus: 0))
推荐阅读
- android - 启用proguard空指针异常后
- php - setcookie 没有在 PHP 中的浏览器中设置值
- java - 你能不能实例化一个接口?
- android - 如何在 Firebase Firestore 查询中使用 whereEqualTo() 和 orderBy()?
- sql - 如果字符串模式替换为雪花
- java - 测量每个线程的精确执行时间
- javascript - 如何在 SharePoint 中禁用刻度控制
- oracle - 如何编写一个接受可变数量绑定参数的存储过程
- python - 如何使用python从(nifti文件).nii.gz文件中获取.json文件
- mysql - 如果列为空,Mysql concat 不起作用,查询有什么问题?