Tag: audiotoolbox

iOS:设置基本的语音处理I / O音频单元-Swift

如果您是需要使用Apple的AudioToolbox和AudioToolbox API的不幸者之一,请让我尝试让您的生活更轻松一些。 苹果公司缺乏文档和有效的示例,因此使用Crucis确实可以使用这些工具进行开发。 经过反复试验,我设法弄清楚了如何在Swift中设置Voice Processing I/O音频单元。 该代码还可以用于设置任何其他音频单元,您只需要根据位于不良文档中的常量替换组件类型,子类型和所有其他参数的值即可。 无需赘言,这里是代码。 在该示例中,我还将展示如何设置本机的某些属性,例如“ Automatic Gain Control和“ Bypass Voice Processing 。

RoboVM应用程序在ptr.get()上崩溃

是否有一些需要获得ptr.get()工作的魔法? 出于某种原因,下面的代码总是崩溃我的应用程序: AudioStreamBasicDescription asbd = new AudioStreamBasicDescription(mSampleRate, mFormatID, mFormatFlags, mBytesPerPacket, mFramesPerPacket, mBytesPerFrame, mChannelsPerFrame, mBitsPerChannel, 0); AudioFilePtr outAudioFile = new AudioFilePtr(); File f = File.createTempFile("ptt", ".caf"); AudioFileError afe = AudioFile.createWithURL(new NSURL(f), 1667327590, asbd, 1, outAudioFile); System.out.println(afe.name()); System.out.println(outAudioFile.get()); 它成功返回从AudioFile.createWithURL没有错误(错误代码:否),但一旦我尝试获取Java实例崩溃。 在另一段代码中,我也遇到了同样types的崩溃,我将一个AudioQueuePtr实例化为queueptr ,并将其传递给AudioQueue.newInput并尝试调用queueptr.get() 。 有什么我在这里失踪? java中没有堆栈跟踪,但这里是XCode Organizer设备日志: Incident Identifier: 2EEFF4F0-9031-4798-80E7-69F55BB70576 CrashReporter Key: 08d7c27d21cb15553295bbae1b2aa2040e94b517 Hardware Model: iPhone3,1 Process: iOS_RVM_NN [1972] […]

MP3声音在模拟器上播放,但不是在设备(audioBeatBox)

我有一个非常严重的问题: Im制作一个audio同步的BEATBOX,同时播放16种不同的声音。 为了实现我们在AVAudioPlayer上放弃的MP3文件的TIME-SYNC,并且包含了AUGraph方法: MixerHostAudio.m和MixerHostAudio.h 我从苹果公司的开发者资源中下载。 该实施工作正常的模拟器,但不是在设备上,加载第四个文件后,CRASHED … 我们将文件加载为kAudioFormatLinearPCM格式。 我们将其更改为:kAudioFormatMPEGLayer3 我们认为这将是所需的格式。 APP设法加载资源,但startAUGraph方法出现错误。 APP没有在设备上崩溃,但它没有声音,也没有在设备,也没有在模拟器。 我们尝试改变位率从32到16,它似乎有帮助..但没有SOund仍然..帮助!

在iPhone上的耳机和扬声器之间切换

我正在尝试设置iPhone应用程序输出的audio路由。 我正在使用路由更改侦听器来检测何时audio路由已更改。 聆听者检测到这些变化,例如耳机插入和拔出的时间。 默认情况下,扬声器播放audio,然后插入耳机,并通过耳机传输audio。 从那里,即使路由更改侦听器正在检测它们,也不会发生任何更改。 任何帮助将非常感激。 NSError *sessionError = nil; [[AVAudioSession sharedInstance] setDelegate:self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError]; UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(sessionCategory), &sessionCategory); AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, RouteChangeListener, (__bridge void *)(self)); AudioSessionSetActive(YES); callback监听器: void RouteChangeListener( void *inUserData, AudioSessionPropertyID inPropertyID, UInt32 inPropertyValueSize, const void *inPropertyValue) { if (inPropertyID == kAudioSessionProperty_AudioRouteChange) { CFStringRef newRoute; UInt32 size […]

使用audio工具箱播放.wav

我正在尝试使用audio工具箱来播放.wav文件。 我有这个到目前为止:但是我的文件不会播放。 如果条件触发正确,但它不会播放。 但是,如果文件不存在,它将打印错误消息。 任何线索什么是错的? -(void) playSound : (NSString *) fName : (NSString *) ext { SystemSoundID audioEffect; NSString *path = [[NSBundle mainBundle] pathForResource : fName ofType :ext]; if ([[NSFileManager defaultManager] fileExistsAtPath : path]) { NSURL *pathURL = [NSURL fileURLWithPath : path]; AudioServicesCreateSystemSoundID((__bridge CFURLRef) pathURL, &audioEffect); AudioServicesPlaySystemSound(audioEffect); } else { NSLog(@"error, file not found: %@", […]

Swift 3 LPCM录音机| 错误:kAudioFileInvalidPacketOffsetError

下面的录音机只能第一次工作,如果您再次尝试录音,则会在尝试AudioFileWritePackets时发出错误“kAudioFileInvalidPacketOffsetError”。 任何想法为什么发生这种情况? 先谢谢你 存储库位于这里 录音机 import UIKit import CoreAudio import AudioToolbox class SpeechRecorder: NSObject { static let sharedInstance = SpeechRecorder() // MARK:- properties @objc enum Status: Int { case ready case busy case error } internal struct RecordState { var format: AudioStreamBasicDescription var queue: UnsafeMutablePointer<AudioQueueRef?> var buffers: [AudioQueueBufferRef?] var file: AudioFileID? var currentPacket: Int64 var […]

Swift:从URL检索audio文件标记列表?

我只想得到一个audio文件中的标记列表。 我认为这将是一个简单的通用任务,不会太困难。 但是,我几乎找不到任何示例代码或文档,所以我最终得到这样的结果: private func getMarkers(_ url: CFURL) -> AudioFileMarkerList { var file: AudioFileID? var size: UInt32 = 0 var markers = AudioFileMarkerList() AudioFileOpenURL(url, .readPermission, kAudioFileWAVEType, &file) AudioFileGetPropertyInfo(file!, kAudioFilePropertyMarkerList, &size, nil) AudioFileGetProperty(file!, kAudioFilePropertyMarkerList, &size, &markers) return markers } 可悲的是,这不起作用: error: memory read failed for 0x0 。 我只是无法弄清楚问题所在。 我检查了url和大小(这两个都是有效的),但总是无法检索标记。 任何帮助,这将是太棒了! 编辑:这种工作,但所有的数据是完全错误的,我不明白如何一个audio文件可以有多个标记的AudioFileMarkerLists: private func getMarkers(_ url: CFURL) […]

iOS:Airplay选取器MPVolumeView的替代品

我正在使用MPVolumeView为avplayer播放播放selectairplay设备。 有没有可能的非私人API的替代品,所以我将能够提供我自己的用户界面控件挑选airplay设备? 我指的是API,我的意思是,我需要的是: 能够将audio重新路由到Airplay-设备特定的audio路由。 回收airplay设备名称。 (获取所有可用的audio路由,然后获取播放audio路由的描述) 我知道AudioToolbox框架提供了一些额外的API来处理AudioSession,但我发现重新路由audio的唯一方法是AVAudioSession的: – (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError **)outError` 只允许将audio重新路由到内置扬声器。 也许还有一些其他的方法如何实现呢? (我也只是find了如何检索AirplayDevice的名称作为当前audio路由的描述 – 使用AVPlayer获取AirPlay设备的名称 )

在包含AudioToolbox框架的Objective-C iOS项目中找不到AudioServices.h

根据苹果文档,AudioServices.h应该是AudioToolbox框架的一部分。 即使我已经将AudioToolbox框架添加到我的Xcode项目,当我#import AudioServices我得到错误:AudioServices.h文件未find。 无论我input#import“AudioServices.h” 或#import“AudioToolbox / AudioServices.h”。 以防万一,我试图删除,然后重新添加AudioToolbox框架,没有任何效果。 AudioServices文件可能会损坏吗? (如果是这样,有谁知道我可以下载另一个副本?) 我正在使用XCode 4.2,但是由于我正在转换一些旧的开源代码,因此项目被设置为兼容XCode 3.2。 这可能是问题吗? 我确定我错过了一些简单的事情。 我对编程完全陌生…任何帮助表示赞赏! —–编辑(看我下面的评论)—– 在AudioServices.h中,有两个问题: extern OSStatus AudioSessionInitialize( CFRunLoopRef inRunLoop, CFStringRef inRunLoopMode, AudioSessionInterruptionListener inInterruptionListener, void *inClientData) extern OSStatus AudioSessionAddPropertyListener( AudioSessionPropertyID inID, AudioSessionPropertyListener inProc, void *inClientData) 在SpeakHereController.mm(来自示例苹果代码),我想转换为ARC,以使其与我的项目中的其他文件更好地合作: – (void)awakeFromNib { // Allocate our singleton instance for the recorder & player object recorder = […]

ios pjsip – 在拨打电话时播放声音

当我啜饮电话时,有时候我想发送dtmf数字。 为此,我创build了一个自定义拨号盘,当按下某个按键时,应该播放该按键的声音,但是在SIP呼叫期间(没有呼叫,声音播放时)不会播放该声音。 这些声音与AudioToolbox.h库( AudioServicesPlaySystemSound(soundID) )中的函数一起播放。 是否有一些属性需要在pjsip(pjsua)或AudioToolbox库中设置,以便在sip调用期间播放声音? 我知道这是可能的( Bria有这个, Groundwire也不知道他们是否使用pjsip来实现sip)。