如何在iOS中播放AAC编码数据?

时间:2016-04-29 06:20:03

标签: ios cocoa aac decoder

我从AACEncoder获取AAC编码数据,我想播放该数据,但是我从编码器完成块收到它。这是我设置音频的代码

- (void) setupAudioCapture {

if (_aacEncoder == nil) {

    _aacEncoder = [[AACEncoder alloc] init];

    /*
     * Create audio connection
     */
    AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
    NSError *error = nil;
    AVCaptureDeviceInput *audioInput = [[AVCaptureDeviceInput alloc] initWithDevice:audioDevice error:&error];
    if (error) {
        NSLog(@"Error getting audio input device: %@", error.description);
    }
    if ([self.captureSession canAddInput:audioInput]) {
        [self.captureSession addInput:audioInput];
    }

    _audioQueue = dispatch_queue_create("Audio Capture Queue", DISPATCH_QUEUE_SERIAL);
    _audioOutput = [[AVCaptureAudioDataOutput alloc] init];
    [_audioOutput setSampleBufferDelegate:self queue:_audioQueue];
    if ([self.captureSession canAddOutput:_audioOutput]) {
        [self.captureSession addOutput:_audioOutput];
    }
    _audioConnection = [_audioOutput connectionWithMediaType:AVMediaTypeAudio];
}   
}

这里我从

获取AAC编码数据
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {                                             
 if (connection == _audioConnection) {

    CMTime pts = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
    double dPTS = (double)(pts.value) / pts.timescale;
    [_aacEncoder encodeSampleBuffer:sampleBuffer completionBlock:^(NSData *encodedData, NSError *error) {

        if (encodedData) {
            //What to do here to play this data?
            }

        } else {
            NSLog(@"Error encoding AAC: %@", error);
        }
    }];


}}

0 个答案:

没有答案