系统声音通过扬声器非常安静地播放 - C,Objective-C

Posted

技术标签:

【中文标题】系统声音通过扬声器非常安静地播放 - C,Objective-C【英文标题】:System Sound plays very quietly over speakers - C, Objective-C 【发布时间】:2013-02-28 21:08:19 【问题描述】:

我在 Objective-C 中使用 AudioservicesPlaySystemSound 来播放我的音效。它们在模拟器和我的 iPad 扬声器上播放的声音非常响亮,但是当我将 iPad 上的音频线插入扬声器时,声音低得离谱,几乎听不见。我尝试了不同的扬声器并获得了相同的效果。通过蓝牙,声音仍然很安静,但至少可以听到。这是我的代码:

- (IBAction)playSound:(UIButton *)sender

    NSString *path = [NSString stringWithFormat: @"%@/%@", [[NSBundle mainBundle] resourcePath], @"MySoundEffect.caf"];
    NSURL *filePath = [NSURL fileURLWithPath: path isDirectory: NO];
    NSLog(@"filepath = %@", filePath);

    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);

    AudioServicesPlaySystemSound(soundID);

【问题讨论】:

不要滥用格式字符串来构造路径名。 [[NSBundle mainBundle] pathForResource:@"MySoundEffect" ofType:@"caf"] 应该足够好了。 简单问题:扬声器有内置放大器吗? ie 他们有动力吗?当您将它们插入不同的设备时,它们会产生正常的音量吗?听起来您正试图直接从线路电平输出驱动扬声器。 或者 iPad 的耳机音量设置得很低…… @H2CO3 滥用格式字符串与此问题无关,因为声音有效,我之前尝试过“ofType”格式并且遇到了同样的问题。 @fiorgodx 我知道,这只是一个旁注...... 【参考方案1】:

这似乎是仅使用 AudioServicesPlaySystemSound 的问题。我的解决方法是使用 SimpleAudioEngine,它会在幕后完成一些工作,我认为即使通过蓝牙或线路播放也能保持音频音量和质量不变。

【讨论】:

以上是关于系统声音通过扬声器非常安静地播放 - C,Objective-C的主要内容,如果未能解决你的问题,请参考以下文章

Swift + AVAudioRecorder 非常安静地录制

AVAudioRecorder & AVAudioPlayer - 内置扬声器的声音输出,如何更改?

SKAction playSoundFileNamed 没有声音通过 iphone 扬声器

如何从一组双重创建声音并在扬声器上播放

从 C/C++ 播放声音的最简单方法

AVAudioPlayer 在进行 WebRTC 音频通话时以非常低的音量播放声音