设为首页 加入收藏

TOP

iOS 直播-获取音频(视频)数据
2017-10-13 10:23:50 】 浏览:1238
Tags:iOS 直播 获取 音频 视频 数据

iOS 直播-获取音频(视频)数据


//
//  ViewController.m
//  capture-test
//
//  Created by caoxu on 16/6/3.
//  Copyright © 2016年 caoxu. All rights reserved.
//

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVCaptureAudioDataOutputSampleBufferDelegate>


@property (nonatomic, strong) AVCaptureSession * session;
@property (nonatomic, strong) AVCaptureAudioDataOutput *audioOutput;
@property (nonatomic, strong) dispatch_queue_t audioQueue;
@property (nonatomic, strong) AVCaptureConnection *audioConnection;



@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.session = [[AVCaptureSession alloc]init];
    
    NSError *error = nil;
    AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
    AVCaptureDeviceInput *audioInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
    
    if (error) {
        
        NSLog(@"Error getting video input device: %@", error.description);
        
    }
    if ([self.session canAddInput:audioInput]) {
        
        [self.session addInput:audioInput];
        
    }
    
    // 配置采集输出,即我们取得音频的接口
    self.audioQueue = dispatch_queue_create("Audio Capture Queue", DISPATCH_QUEUE_SERIAL);
    self.audioOutput = [[AVCaptureAudioDataOutput alloc] init];
    [self.audioOutput setSampleBufferDelegate:self queue:self.audioQueue];
    
    if ([self.session canAddOutput:self.audioOutput]) {
        [self.session addOutput:self.audioOutput];
    }
    
    // 保存Connection,用于在SampleBufferDelegate中判断数据来源(是Video/Audio?)
    self.audioConnection = [self.audioOutput connectionWithMediaType:AVMediaTypeAudio];
    
    
    [self.session startRunning];
    
    
}

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection{
    // 这里的sampleBuffer就是采集到的数据了,但它是Video还是Audio的数据,得根据connection来判断
    if (connection == self.audioConnection) {  // Audio
        
        
        NSLog(@"%@",sampleBuffer);
        
        
        NSLog(@"这里获得audio sampleBuffer,做进一步处理(编码AAC)");
        
    }
   
}


@end
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇浅谈iOS触摸事件理解 下一篇iPad编程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目