问题标签 [extaudiofile]
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.
ios - 使用 ExtAudioFileWrite ios 将流式 mp3 数据包的缓冲区写入 wav 文件
我正在开发在线广播应用程序,我设法使用 AudioQueueServices 播放来自 Icecast 服务器的流式 mp3 数据包,我正在努力实现录制功能。
由于流媒体是 mp3 格式,我无法使用 AudioFileWritePackets 将音频数据包直接写入文件。
为了利用扩展音频的自动转换,我使用 ExtAudioWriteFile 写入 wav 文件。我已经使用 FileStreamOpen 回调函数 AudioFileStream_PropertyListenerProc 和我手动填充的目标格式设置了传入数据包的 AudioStreamBasicDescription。代码成功创建文件并将数据包写入其中,但在播放时我听到的是白噪声;这是我的代码
我的问题是:
我的方法是否正确,我可以这样将 mp3 数据包写入 wav 文件吗?如果是这样,我错过了什么?
如果我的方法是错误的,请告诉我您认为正确的任何其他方式。朝正确方向轻推对我来说绰绰有余
我非常感谢任何帮助我已经阅读了每个 SO 问题我可以得到这个主题,我还仔细查看了苹果转换文件示例,但我无法弄清楚我错过了什么提前感谢任何帮助
swift - 在 macOS 的 swift 5 中声明 ExtAudioFileRef 的正确方法
我一直在开发一个音频应用程序,我可以在其中寻找 ExtAudioFile 中的特定点并将代表特定播放长度(时间)的特定数量的帧加载到 AVAudioPCMBuffer 中并开始播放。如果用户在播放该音频片段期间选择了一个复选框,则缓冲区会被输入音频文件的剩余内容,以便播放到最后。
然而,我遇到了障碍。我发现了加载这些资源的旧代码示例。他们声明这些调用对我来说在 Swift 5 中不起作用的方式。我收到错误。具体来说:
我得到的第一个错误是 trackRef。编辑器将此行标记为“类型名称后的预期成员名称或构造函数调用”。但是我所遵循的示例仅具有如上面代码所示声明的属性。
下一行err = try ExtAudioFileOpenURL(orl as CFURL, trackRef)
有错误“无法将'ExtAudioFileRef?.Type'(又名'Optional.Type')类型的值转换为预期的参数类型'UnsafeMutablePointer<ExtAudioFileRef?>'(又名'UnsafeMutablePointer<Optional>')。”
编辑器建议我将 trackRef 声明更改为ver trackRef = ExtAudioFileRef?()
orvar trackRef = ExtAudioFileRef?.self
但这些都没有任何帮助,因为如果我尝试使用第一个建议,我会得到“无法为类型'ExtAudioFileRef 调用初始化程序?' 没有参数”和一个灰色的注释显示“ 1. 'ExtAudioFileRef?'的重载?存在这些部分匹配的参数列表:(Wrapped),(来自:解码器),(nilLiteral:())。 “但是错误err = ExtAudioFileOpenURL(url as CFURL, trackRef)
消失了。如果我尝试使用第二个建议let trackRef = ExtAudioFileRef?.self
,则该行没有错误,但随后我在err = ExtAudioFileOpenURL(url as CFURL, trackRef)
“无法将类型“ExtAudioFileRef?.Type”(又名“Optional.Type”)的值转换为预期的参数类型“UnsafeMutablePointer<ExtAudioFileRef?>”(又名“UnsafeMutablePointer<Optional>”) “
我不知道这些错误是什么意思,因为我不知道 UnsafeMutablePointer 是什么。我只是按照示例代码来尝试实现我想做的事情。不幸的是,我无法在 Swift 中使用任何音频工具来做我想做的事情,这对我来说是下一个兔子洞。
谢谢你的帮助。