文档https://developer.apple.com/reference/avfoundation/avcapturefileoutput表示存在AVCaptureFileOutput的委托属性。
但是以下代码
let vfo = AVCaptureFileOutput()
vfo.delegate = self
给出错误"类型的值' AVCaptureFileOutput'没有会员'委托'"
我希望将AVCaptureFileOutputDelegate用于AVCaptureMovieFileOutput实例。
任何指针都会有所帮助。
答案 0 :(得分:0)
点击您引用页面上delegate
property的链接(或查看头文件中的#if
),您会注意到该属性仅适用于macOS,而不是iOS版。因此,当您在以iOS为目标的项目中时,该属性不存在。
iOS不允许您在捕获和记录到同一会话的文件时接收样本缓冲区 - 您可以拥有AVCaptureVideoDataOutput
或AVCaptureMovieFileOutput
,但不是两个。如果您只想要关于电影文件捕获进度的委托回调,请使用startRecording(toOutputFileURL:recordingDelegate:)
并采用AVCaptureFileOutputRecordingDelegate
代替。如果您想要样本缓冲区,请使用AVCaptureVideoDataOutput
接收它们,使用AVAssetWriter
进行较低级别的文件输出。
答案 1 :(得分:0)
感谢您指向AVAssetWriter的指针。我能够找到RosyWriter样本https://developer.apple.com/library/content/samplecode/RosyWriter/Introduction/Intro.html。修改后的CaptureOutput:didOutputSampleBuffer捕获音频averagePowerLevel完成了获取录制电影并获得同步音频电平的技巧。
但它的使用是否有一个更条纹化的例子?我试图剥离进行视频处理的渲染器只是打破了样本。