【问题标题】:Can not get IOS InputAudioQueue to work (Very Simple Example)无法让 IOS InputAudioQueue 工作(非常简单的示例)
【发布时间】:2014-03-28 18:53:19
【问题描述】:

我正在对IOS音频队列服务做一些测试和学习

当我尝试创建新的 InputAudioQueue 时,我得到 -50 osstatus ,我做错了什么?

我阅读了苹果 AudioQueue 服务参考几次,并阅读了函数文档,但我仍然不知道是什么问题

谢谢

#import "AudioSenderVC.h"
#import <AudioToolbox/AudioToolbox.h>
#import <Foundation/Foundation.h>

@interface AudioSenderVC ()
@property (weak, nonatomic) IBOutlet UITextField *ipTextField;
@end

@implementation AudioSenderVC

static void MyAudioQueueInputCallback (
                                   void                                *inUserData,
                                   AudioQueueRef                       inAQ,
                                   AudioQueueBufferRef                 inBuffer,
                                   const AudioTimeStamp                *inStartTime,
                                   UInt32                              inNumberPacketDescriptions,
                                   const AudioStreamPacketDescription  *inPacketDescs
                                   )
{
NSLog(@"hey I just got audio data from the mic!");
}
void createAudioQueue(AudioStreamBasicDescription*  mDataFormat)
{
AudioQueueRef* inAQ = NULL;
OSStatus err=AudioQueueNewInput(mDataFormat, MyAudioQueueInputCallback ,NULL,CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, inAQ);
if(inAQ!=NULL)
    NSLog(@"YAY!, InputQueue was Created");
if(err)
    NSLog(@"Error:%i",(int)err);

 }
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)setupAudioFormat:(AudioStreamBasicDescription*)format
{
format->mSampleRate = 8000.0;
format->mFormatID = kAudioFormatLinearPCM;
format->mFramesPerPacket = 1;
format->mChannelsPerFrame = 1;
format->mBytesPerFrame = 2;
format->mBytesPerPacket = 2;
format->mBitsPerChannel = 16;
format->mReserved = 0;
format->mFormatFlags = kLinearPCMFormatFlagIsBigEndian |
kLinearPCMFormatFlagIsSignedInteger |
kLinearPCMFormatFlagIsPacked;
}
- (IBAction)sendAudio:(id)sender {
AudioStreamBasicDescription*  mDataFormat=malloc(sizeof(AudioStreamBasicDescription));
[self setupAudioFormat:mDataFormat];
createAudioQueue(mDataFormat);
}

@end

【问题讨论】:

    标签: ios audio audioqueueservices


    【解决方案1】:

    您正在为结果队列传递 NULL,而应该传递 AudioQueueRef 的地址,如下所示:

    AudioQueueRef inAQ;
    
    OSStatus err=AudioQueueNewInput(mDataFormat, MyAudioQueueInputCallback, NULL, CFRunLoopGetCurrent(), kCFRunLoopCommonModes, 0, &inAQ);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多