AVCapture架构探索

作者: 偶是星爷 | 来源:发表于2016-04-09 09:59 被阅读429次

    苹果在AVFoundation的设计上一如既往优雅。

    Capture Basics

    摄像头、麦克风、屏幕等作为输入源,文件、Raw Buffer等作为输出源,另外还有两种特别的输出源:

    1. AVCaptureVideoPreviewLayer 视频预览。它是一个CALayer,因此你可以把它放到任意一个界面中,同时也支持Core Animation的操作
    2. AVCaptureAudioPreviewOutput 音频预览。我理解它是扬声器Output,从这个output获取到 AVCaptureAudioChannelInternal,就能得到当前声音的能量。

    AVCaptureSession是整个Capture的核心。从上图可知,AVCaptureSession能有多个输入&输出。类似于RunLoop,它不断的从输入源获取数据,然后分发给各个输出源。

    输入源有自己的硬件参数可以设置流控,输出源作为一个被动接受对象,它并没有太多流控设置,苹果巧妙的引入AVCaptureConnections。

    Using AVCaptureConnections

    打个比方,我们要控制蓄水池里面的水位。正确做法不是等水满了后把水放掉,而是换一个小点的入水管。AVCaptureConnections就是Session和Output中间的控制节点。每个Output与Session建立连接后,都会分配一个默认的AVCpatureConnection。我们很多实时数据,也都是从connection得到的。

    我写了个摄像头截图的小Demo,有兴趣的拿去不谢
    AVCapturePreview


    参考资料

    相关文章

      网友评论

        本文标题:AVCapture架构探索

        本文链接:https://www.haomeiwen.com/subject/mggvlttx.html