当前位置: 首页 > 知识库问答 >
问题:

iOS无法在扬声器上播放并将音频会话设置为录制

荀增
2023-03-14

所需功能:1) 插入时通过耳机播放音频,2) 耳机未插入时通过扬声器播放音频,以及 3) 通过耳机或内置麦克风录制音频。

为了让它在扬声器和耳机上播放音频,我使用以下音频会话类型:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError];

然后创建音频播放器的实例。这非常适合在插入时通过耳机播放音频,在未插入时通过扬声器播放音频,直到我尝试录制为止。

录制时,我首先将音频会话设置为音频会话类别播放和录制,然后尝试使用Novicane进行录制。有时成功,但有时应用程序崩溃,没有堆栈跟踪或调试器指示,并出现AUIOClient_StartIO错误。

我对这个错误的谷歌搜索表明我需要始终保持会话AVAudioSession分类播放和记录。这似乎确实阻止了AUIOClient_StartIO错误的发生。

但是,每当我使用AVAudioSessionCategoryPlayAndRecord进行播放时,它都会从内置听筒而不是扬声器中播放。

我知道我可以覆盖扬声器的音频输出通道(例如 https://stackoverflow.com/a/1064941/895876),但插入耳机不会自动切换到耳机音频。

如何获得所有三个功能?

共有1个答案

计弘
2023-03-14

您必须使用AUHAL单元将特定输入设备设置为默认输入,然后将其与AudioQueue连接。

看看这个苹果技术。注意,它可能会帮助你。。

如果不起作用,请尝试使用设置首选输入:

这是在我的脑海里,根据我最近读到的东西,我实际上并没有尝试过,但知道其他人尝试成功了。

祝你好运

 类似资料:
  • 我想用插入式耳机通过扬声器播放音频文件。 但我得到了 IllegalStateException 有什么想法可以解决这个问题吗?

  • 是否可以通过Android设备的手机扬声器播放音频?手机内部较小的扬声器,可产生低音量声音,只有在将耳朵贴在电话上时才能听到。 希望我的描述足够清楚,可以理解我的问题。 如果可能的话,一个如何实现这一点的例子将非常有帮助。 目前我正在使用下面的代码初始化我的MediaPlayer。

  • 问一下Xamarin.Forms便携里面Xamarin.Forms的音频怎么播放 正如我所知,有依赖服务,我看到了一些示例,只有iOS和Android,但没有Windows Phone 8.1/Windows 8.1和UWP。

  • 我有一个简单的应用程序,它从firebase加载视频列表,通过单击任何视频,我将通过<code>AVPlayer 但我无法播放在Firebase存储中上传的任何视频。 玩家代码: 另外,我尝试了另一种替代解决方案,方法是在本地下载此视频并从本地播放,但该解决方案也不起作用。 让我知道我是否在视频播放器中犯了任何错误。

  • 问题内容: 我有几个与Sun,音频播放器和声音输入/输出有关的问题 为什么该软件包不属于Java API?此处是一些信息:http : //grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6b14/sun/audio/AudioPlayer.java但这仍然是默认JDK构建I的一部分正在使用。 我已经尝试过使用JMF,

  • 问题的标题可能看起来重复,但我的问题有时是一个问题,会导致故障。当插入耳机时,我使用以下代码通过扬声器播放。 上面的代码以以下方式播放音频:1.很少时候,它可以完美播放。2.大多数时候,它在背景中播放循环声音。3.很少时候,它什么都不播放。 插入耳机时,系统声音播放似乎没有错误。例如-设置铃声正确播放相应的铃声,没有任何故障。请帮助我了解如何在插入耳机的情况下通过扬声器正确播放声音。