2012-07-03 4 views
6

Ho cercato di scoprire che sdk non supporta lo zoom digitale in entrata o in uscita, devi farlo indirettamente. Il modo in cui ho trovato su StackOverflow è trasformare il AVCaputureVideoPreviewLayer durante la registrazione, e fare il postelaborazione di trasformazione corrispondente al video di output (la mia idea attuale è utilizzare la funzione di trasformazione della trasformazione AVMutableVideoCompositionLayerInstruction's).zoom digitale ios per registrazione video. come implementare in modo efficiente?

Il problema è come si può registrare tutto il corso continuo dell'attività zoom dell'utente, che mi sembra possa essere una Sirious di zoom molto complessa in e zoom out comportamenti Voglio dire, per esempio, io disegno un cursore per l'utente di controllare lo zoom, l'utente può tenere lo zoom del cursore in 4x lentamente (diciamo ultimi 3 secondi) e, senza rilasciare il cursore, zumare rapidamente fino a 2X (diciamo per gli ultimi 0,5 secondi), devo registrare tutte queste modifiche secondo la timeline.

Mi sento davvero questo complesso di record, inoltre è anche necessario garantire che non costa troppe risorse per mantenere le prestazioni regolari del processo di registrazione video! O qualsiasi altro modo di implementazione dello zoom digitale? Grato a qualsiasi aiutante!

risposta

1

È possibile trasformare AVCaputureVideoPreviewLayer durante la registrazione e utilizzare il valore di zoom per manipolare i frame nel delegato AVCaptureVideoDataOutput. Il metodo delegato captureOutput:didOutputSampleBuffer:fromConnection: può essere utilizzato per elaborare i frame del video. Vedere la documentazione di AVFoundation AVFoundation documentation, Media Capture> Processing Frames of Video.