问题标签 [avaudioengine]
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 - AVAudioEngine.start() 中的崩溃,即使它包含在 do/catch 中
我有以下代码(重新)开始AVAudioEngine
连接到AVAudioEngineConfigurationChangeNotification
:
self.engine 定义为
但是,我经常通过 Crashlytics 收到崩溃报告说
致命异常:com.apple.coreaudio.avfaudio 错误 561015905
在包含try self.engine.start()
.
561015905 是AVAudioSessionErrorCodeCannotStartPlaying
,据我了解,这应该是NSError
错误代码,而不是异常,它应该被我catch
在上面的代码中的空白捕获。尽管如此,该应用程序似乎在那一点上崩溃了。我错过了什么?
我知道在某些情况下,应用程序在后台唤醒时可能会发生此错误,我会对此感到满意,只要我能以某种方式捕捉到它的发生,就像我想的那样do/catch
。
ios - 安装在音频引擎上的 Tap 只生成短文件
我正在开发一个应用程序,该应用程序允许用户录制音频,在更改音高的同时播放它,然后将他们所做的事情记录为单独的文件。
该代码似乎正在运行,但新文件的持续时间仅为 0.37 秒(原始 5 秒)。我猜当我从缓冲区写入时,它会一直保存自己,因此只剩下最后一段。如果这是我的问题,我如何附加文件而不是覆盖它?
更新了创建持续时间为 0.0 的文件的代码:
swift - 是否可以录制来自 iPhone 的音频?
我正在开发一个允许用户创建一种配音的应用程序。有一个音频文件正在播放,用户可以在某些时刻点击以插入声音(有点像审查按钮。)我想知道如何去捕捉最终产品。
直接从 iPhone 捕获音频似乎是最简单的方法,因为用户在制作成品时已经听到了声音。但是,我找不到有关如何执行此操作的任何信息。如果不可能,有什么建议吗?
ios - 使用 AVAudioMix 在 SCRecorder 片段上应用淡入淡出效果
我正在尝试解决一个用于 iO 的令人敬畏的 SCRecorder 库的问题。问题是当我用相机录制一个片段时,我可以在每个视频片段的开头听到“砰”或“咔哒”的声音。
为了解决这个问题,我想在每个片段的开头对音频应用“淡入”效果,这样我就再也听不到这些“咔嗒声”了。
到目前为止,这是我的代码:
我没有错误,但它只是不会淡化音频。有人能帮我吗?
谢谢 :-) !
ios - 从 installTapOnBus 闭包中访问类属性
我有一个非常简单的installTapOnBus
闭包,可以成功更新控制台,但不能更新 UI 元素。这是代码:
也许我需要发送self
对闭包的弱引用,但不确定语法。任何关于如何更新 UI 元素的反馈/想法都会很棒!谢谢阅读。
macos - 使用 AVAudioEngine 进行视频播放
我是 Swift 和 OSX 的新手,如果这是一个愚蠢的问题,我深表歉意。我正在尝试创建一个视频播放器,允许用户在播放视频时使用滑块对视频的音轨进行音高转换(即改变音频频率)。
我已经想出了如何使用 AVAudioEngine 对音频执行此操作(基于本教程https://www.robotlovesyou.com/mixing-between-effects-with-avfoundation/)并且我还想出了如何播放视频.
但是,我坚持将 AvAudioEngine 应用于视频轨道的音频(我正在尝试 .mp4,但我希望它可以以任何格式工作)。
有没有办法做到这一点?或者,如果没有,是否有另一种方法可以实现我实时(在播放视频时)改变音频音轨的真正目标?
非常感谢
ios - 来自内存的 AVAudioFile?
我正在玩 AVAudioFile 和 AVAudioPlayerNode。
我已经实现了一个自定义流协议,它接收音频块并处理所有缓冲部分,但是我无法在不使用文件系统的情况下播放第一个块(我现在不想使用 FS)。
这是:当我将数据写入临时文件并使用加载它时它工作正常AVAudioFile
(然后我初始化 aAVAudioBuffer
并使用AVAudioFile.readIntoBuffer
& finally AVAudioPlayerNode.scheduleBuffer
)。但我无法直接从第一个块(NSData)加载缓冲区。
我应该实现自定义 NSURLProtocol 并尝试从自定义 NSURL 初始化 AVAudioFile 吗?
ios - 将单声道 AVAudioPCMBuffer 写入立体声 AVAudioFile
我正在使用 AVAudioEngine 录制音频,并将其保存为声音文件。
用户可以选择导入音频文件,然后如果愿意,他们可以在此文件的末尾继续录制。我通过将导入的文件读取到 AVAudioPCMBuffer 中来获取音频数据,然后将其写入我正在录制的文件中。如果导入的文件是立体声的(因为我正在写入的文件也是立体声的),这非常有用。但是如果导入的文件是单声道的,当我尝试将 AVAudioPCMBuffer 写入文件时,代码会崩溃,这仅仅是因为通道数不匹配。
是否可以将处理格式设置为立体声的单声道 AVAudioPCMBuffer 读入 av AVAudioFile?我可以将缓冲区转换为立体声吗?
这是我如何从导入的文件中获取音频缓冲区的示例:
这就是我使用 AVAudioEngine 创建要写入的 AVAudioFile 的地方:
最后,这就是我将音频缓冲区写入文件的方式:
如果我将音频转换为立体声,一切正常。