AVCaptureVideoDataOutput是一个具体子类AVCaptureOutput。您可以使用从正在捕获的视频处理未压缩的帧,或访问压缩的帧。

AVCaptureVideoDataOutput 实例产生的视屏帧数你可以使用其他的媒体api 进行处理。你也可以使用 captureOutput(_:didOutputSampleBuffer:from:) 代理方法进行访问。

配置

var videoSettings: [AnyHashable : Any]!
// 设置 output 的压缩
/*
  字典中包含视屏设置的压缩设置的 key 值。定义在 CVPixelBuffer 的像素缓冲属性 的key 值 
  目前唯一支持的 key kCVPixelBufferPixelFormatTypeKey
  获取视屏像素格式和视屏编码格式可能的值,
  分别查看 availableVideoCVPixelFormatTypes 和 availableVideoCodecTypes 

  videoSettings 设置为 nil 的时候,使用的是 当前 session 的 sessionPreset
*/

var alwaysDiscardsLateVideoFrames: Bool
// 总是丢弃后期视频帧。 默认是 true
/*
  true : 对象立即丢弃帧捕获,而调度队列处理现有帧被阻塞在captureOutput(_:didOutputSampleBuffer::)委托的方法。

  false :  代理被允许更多的时间来处理旧框架之前新帧被丢弃,但应用程序的内存使用情况可能显著增加。
*/

func recommendedVideoSettingsForAssetWriter(withOutputFileType outputFileType: String!) -> [AnyHashable : Any]!
// 为资源写入的推荐的视屏设置。
/*
  outputFileType : 指定要写入的文件类型的UTI。 有关支持的类型,请参阅文件格式UTI。

  返回值 一个完全填充的字典的键和值与AVAssetWriter兼容。
*/

AVCaptureVideoDataOutputSampleBufferDelegate

AVCaptureVideoDataOutput的代理对象接收捕获视频样本缓冲区 和 通知的样品缓冲末下降。

管理样品缓冲行为

optional func captureOutput(_ captureOutput: AVCaptureOutput!, 
         didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, 
                            from connection: AVCaptureConnection!)
// 通知委托写一个新的视频帧。
/*
  captureOutput: 捕获输出对象
  sampleBuffer : CMSampleBuffer对象包含视频帧数据和额外的帧的信息,比如它的格式和显示时间。
  connection: 连接视屏的接收者
*/ 


optional func captureOutput(_ captureOutput: AVCaptureOutput!, 
                       didDrop sampleBuffer: CMSampleBuffer!, 
                            from connection: AVCaptureConnection!)
// 通知委托一个视频帧被丢弃。

results matching ""

    No results matching ""