Xinghan Chen 2016-03-11 09:01 采纳率: 100%
浏览 1018
已结题

iOS 关于audio数据的提取

static void AQInputCallback (void *inUserData,

                         AudioQueueRef inAudioQueue,

                         AudioQueueBufferRef inBuffer,

                         const AudioTimeStamp *inStartTime,UInt32 inNumPackets,

                         const AudioStreamPacketDescription * inPacketDesc)

{

getAudioDataText * engine = (__bridge getAudioDataText *) inUserData;

 //[engine processAudioBuffer:inBuffer withQueue:inAudioQueue];

if (inNumPackets > 0)

{
   NSDate *datenow = [NSDate date];
    [engine processAudioBuffer:inBuffer withQueue:inAudioQueue];
     NSString *timeSp = [NSString stringWithFormat:@"%f", (CGFloat)[datenow timeIntervalSince1970]];
    NSLog(@"---------------%@", timeSp);
}

if (engine.aqc.run)

{

    AudioQueueEnqueueBuffer(engine.aqc.queue, inBuffer, 0, NULL);

}

}

  • (id) initWithSampleRate:(NSInteger)sampleRate atChannels:(UInt32)channels

{

self = [super init];

if (self)

{

    aqc.mDataFormat.mSampleRate = sampleRate;

    aqc.mDataFormat.mFormatID = kAudioFormatLinearPCM;

    aqc.mDataFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;

    aqc.mDataFormat.mFramesPerPacket = 1;

    aqc.mDataFormat.mChannelsPerFrame = channels;

    aqc.mDataFormat.mBitsPerChannel = kBitsPerChannels;

    aqc.mDataFormat.mBytesPerPacket = kBytesPerFrame;

    aqc.mDataFormat.mBytesPerFrame = kBytesPerFrame;

    aqc.frameSize = kFrameSize;

    //创建一个录音音频队列对象

    AudioQueueNewInput(&aqc.mDataFormat, AQInputCallback, (__bridge void*)(self), NULL, kCFRunLoopCommonModes, 0, &aqc.queue);

    for (int i=0;i<kNumberBuffers;i++)

    {

        //请求音频队列对象来分配一个音频队列缓存。

        AudioQueueAllocateBuffer(aqc.queue, (UInt32)aqc.frameSize, &aqc.mBuffers[i]);

        //给录音或者回放音频队列的缓存中添加一个缓存数据

        AudioQueueEnqueueBuffer(aqc.queue, aqc.mBuffers[i], 0, NULL);

    }

    aqc.recPtr = 0;

    aqc.run = 1;

    int status = AudioQueueStart(aqc.queue, NULL);

    NSLog(@"AudioQueueStart = %d", status);

}

return self;

}
为什设置的采样率 是44100 但是回调函数里的打印数据的频率只有500次/s?哪位大神给个解决方法 我qq 1353482080

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
    • ¥15 错误 LNK2001 无法解析的外部符号
    • ¥50 安装pyaudiokits失败
    • ¥15 计组这些题应该咋做呀
    • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
    • ¥15 让node服务器有自动加载文件的功能
    • ¥15 jmeter脚本回放有的是对的有的是错的
    • ¥15 r语言蛋白组学相关问题