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.
fonte
2015-09-03 10:21:41
Ciao John, che cos'è "FrameProducer"? Non riesco a iniziarlo nel mio codice. Devo importare qualcosa? – TIMEX
'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. –