2013-05-25 1 views
0

В RubyMotion я использую AVFoundation для screencapture в попытке реализоватьиз библиотеки разработчиков Mac. Программа должна захватывать видео с экрана и записывать в файл .mov.AVCaptureMovieFileOutput - нет активных/активированных подключений

Я не совсем понимаю, почему я получаю эту ошибку:

* -[AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:] - no active/enabled connections.

Простой код:

# 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

Я использовал неправильную константу для отображения идентификатора. Эта работа:

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