rtcp/rtp语音

iPhone下udp,rtcp/rtp的及时语音通话。

占坑,代码需要整理...

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

#define kRecordBuffers	9

/*
采集语音
 */
@interface AudioRecord : NSObject {
    IBOutlet UILabel* _averagePower;
    IBOutlet UILabel* _peakPower;
    
    AudioQueueRef mQueue;
    AudioQueueBufferRef			mBuffers[kRecordBuffers];
    AudioStreamBasicDescription mFormat;
    AudioQueueLevelMeterState *_chan_lvls;
    NSArray *_channelNumbers;
    
    BOOL recording;
}
-(void)setChannelNumbers:(NSArray *)v;
-(void)initAudioSession;//初始化
- (IBAction)startstop;//采集或停止

-(int)getRecordByteSize;//已采集的字节数
-(int)getRecordPacketSize;//已采集的字节包数

-(void)setRecording:(BOOL)bl;//是否继续采集

@end
 
static void MyInputBufferHandler(void * inUserData,
                                 AudioQueueRef inAQ,
                                 AudioQueueBufferRef inBuffer,
                                 const AudioTimeStamp * inStartTime,
                                 UInt32 inNumPackets,
                                 const AudioStreamPacketDescription* inPacketDesc)
{
    pool = [[NSAutoreleasePool alloc] init];
    //NSLog(@"mAudioDataByteSize=%lu",inBuffer->mAudioDataByteSize);
    
    UdpTemplate *rtp = [StaticClassFactory getRtp];
    if (rtp!=nil) {
        uint8_t outbuf[100];
        int outbuflength = 
        Encoder_Interface_Encode(amr, MR515, (const short *)inBuffer->mAudioData, outbuf, 0);
        

        NSData *mv = [NSData dataWithBytes:outbuf length:outbuflength];

        if (listSize<8) {
            [list addObject:mv];
            listSize++;
        }else{
            NSData *data = [RtpBean rtpList:list];
            if (data!=nil) {
                [rtp send:data];
                sendRecordByteSize += sizeof(data);
                sendRecordPacketSize++;
            }
            [list removeAllObjects];
            listSize = 0;
        }
    }
     
    AudioQueueEnqueueBuffer(inAQ, inBuffer, 0, NULL);
    [pool release];
    pool = nil;
}

猜你喜欢

转载自yanghao0.iteye.com/blog/1705073