2015-08-31 14 views
20

Quando pubblico uno streaming su iOS, TokBox usa la videocamera predefinita. C'è un modo per aggiungere filtri live al publisher?Come posso aggiungere filtri immagine core ai video OpenTok?

Voglio solo un semplice codice di esempio su come creare un filtro e collegarlo all'oggetto editore opentok (OTVideoCapture).

Oppure, se quello non è il modo giusto per farlo ... anche il filtro sul lato utente funziona.

Come può essere fatto facilmente?

risposta

8

Come ho capito, si desidera applicare i filtri prima di inviare dati video e anche in tempo reale. Non c'è un codice sorgente facile qui ma potrei dirti il ​​percorso.

Per i filtri video in tempo reale è possibile utilizzare il framework GPUImage. È pronto per utilizzare la fotocamera della classe GPUImageVideoCamera. Quindi è necessario creare la classe che implementa GPUImageInput (è obiettivo in termini di GPUImage) che produrrà il frame OTVideoFrame dall'input e lo aggiungerà alla pipeline.

Qualcosa di simile a questo:

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; 

videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; 
videoCamera.horizontallyMirrorFrontFacingCamera = NO; 
videoCamera.horizontallyMirrorRearFacingCamera = NO; 

// filter 
filter = [[GPUImageSepiaFilter alloc] init]; 
[videoCamera addTarget:filter]; 

// frame producer for OTVideoCapture 
frameProducer = [[FrameProducer alloc] init]; 
[filter addTarget:frameProducer]; 

// camera view to show what we record 
[filter addTarget:filterView]; 

hai bisogno anche di un'implementazione personalizzata di OTVideoCapture protocollo per OpenTok sé. È possibile utilizzare TBExampleVideoCapture da Lets-Build-OTPublisher sample come punto di partenza. È necessario sostituire il codice della telecamera con sopra il codice della telecamera GPUImageVideoCamera per utilizzare i filtri in tempo reale.

+0

Ciao John, che cos'è "FrameProducer"? Non riesco a iniziarlo nel mio codice. Devo importare qualcosa? – TIMEX

+0

'FrameProducer' è una classe che è necessario implementare. Deve implementare 'GPUImageInput' e produrre frame. Come ho detto prima non c'è codice pronto per l'uso qui. Devi farlo o chiedere a qualcuno di aiutarti. –