AVCaptureMovieFileOutput - 没有活动/启用的连接

时间:2013-05-25 09:09:45

标签: ruby avfoundation avcapturesession rubymotion

在RubyMotion中,我正在使用AVFoundation进行屏幕捕获,试图从Mac Developer Library实现this gist。程序应该从屏幕捕获视频并写入.mov文件。

我不太明白为什么我会收到这个错误:

  

* - [AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:] - 无活动/启用   连接。

简单的代码是:

# Setup recording pipeline
@session = AVCaptureSession.alloc.init
@session.sessionPreset = AVCaptureSessionPresetMedium
input = AVCaptureScreenInput.alloc.initWithDisplayID(KCGDirectMainDisplay)
@session.addInput(input)
movieFileOutput = AVCaptureMovieFileOutput.alloc.init
if @session.canAddOutput(movieFileOutput)
  @session.addOutput(movieFileOutput)
else
  Logger.error "Could not add ouput #{movieFileOutput}"
end
@session.startRunning()

# Delete exisiting file
fileManager = NSFileManager.defaultManager
path = "~/Desktop/video.mov"
if fileManager.fileExistsAtPath(path)
  err = Pointer.new(:object)
  unless fileManager.defaultManager.removeItemAtPath(path, error:err)
    Logger.error "Can't delete existing movie"
  end
end

# Start recording
movieFileOutput.startRecordingToOutputFileURL(NSURL.fileURLWithPath(path), recordingDelegate:self) # <--- Problem

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我为显示ID使用了不正确的常量。这有效:

input = AVCaptureScreenInput.alloc.initWithDisplayID(CGMainDisplayID())