如何在Swift 3中使用sampleBuffer,captureOutput将视频保存到文件?

时间:2016-12-22 06:35:10

标签: swift macos video-streaming video-capture video-encoding

我正试图解决这个问题。我想使用 AVAssetWriterInput 在OSX上使用Swift录制实时视频。

我创建了一个名为input AVAssetWriterInput 实例,我想将数据附加到输入,然后将其写入文件。

我将 expectedMediaDataInRealTime 设置为true,就像它在文档中说的那样。当我运行应用程序时,我收到此错误:

Cannot append sample buffer: Cannot call method when status is 0

我使用 captureOutput 从相机中获取数据。

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) {
   // defined on load
   // var input:AVAssetWriterInput

   // Here I get an error
   input.append(sampleBuffer)
}

AVAssetWriterInput是否会处理视频的编码?如果我还要传输数据,我应该使用2个编写器吗?

由于

1 个答案:

答案 0 :(得分:1)

确保在input.append(sampleBuffer)之前调用AVAssetWriter.startWriting()