2016-11-18 1 views
0

Ich verwende QuickBlox Android SDK, Version 3.0. Meine App muss Gesichtserkennung durchführen oder einige Filter an die Videospur anhängen. Ich habe einige Antworten mit OnQBVideoChatListener gefunden.Wie kann ich Filter an videoTrack von QuickBlox anhängen?

private OnQBVideoChatListener qbVideoChatListener = new OnQBVideoChatListener() { 

     @Override 
     public void onCameraDataReceive(byte[] videoData) { 
     } 

     @Override 
     public void onMicrophoneDataReceive(byte[] audioData) { 
     } 

     @Override 
     public void onOpponentVideoDataReceive(byte[] videoData) { 
     } 

     @Override 
     public void onOpponentAudioDataReceive(byte[] audioData) { 
     } 

}; 

Aber ich kann es in keinem aar von QuickBlox Android SDK 3.0 finden.

Meine Frage ist:

1) Ist es möglich, YUV-Byte-Daten oder OpenGL Textur von Videospur für Android SDK 3.0 zu bekommen?

2) Wie schreibe ich Kamerarahmendaten zurück zur Videospur?

Jede Hilfe wird geschätzt!

Edit 1:

vfite ist richtig. SurfaceViewRenderer.renderFrame (I420Frame frame) ist der Schlüssel zu dieser Frage. Also erweitere ich eine Klasse von QBRTCSurfaceView.

public class CustomRTCSurfaceView extends QBRTCSurfaceView { 
    private static final String TAG = "CustomRTCSurfaceView"; 

    public CustomRTCSurfaceView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomRTCSurfaceView(Context context) { 
     super(context); 
    } 

    @Override 
    public void renderFrame(VideoRenderer.I420Frame frame) { 
     //append filters or do modification as you wish 
     VideoRenderer.I420Frame newFrame = getNewFrame(); 
     super.renderFrame(newFrame); 
    } 
    } 

Aber das nur den Effekt Rahmen der aktuellen Seite ändern, wie man diesen Effekt auf andere Seite der Peer-to-Peer-Verbindung bewerben? Gibt es irgendwelche benutzerdefinierten Parameter, die ich verwenden kann?

Antwort

0

Sie können QBRTCClientVideoTracksCallbacks auf QBRTSession registrieren und eigene und gegnerische Videospur empfangen. Um aktuelle Bilder aus Videospur yuo erhalten kann Video-Callback auf Video-Renderer mit

currentSession.addVideoTrackCallbacksListener(this); 

@Override 
public void onRemoteVideoTrackReceive(QBRTCSession session, final QBRTCVideoTrack videoTrack, final Integer userID) { 
    videoTrack = ..; 
} 

videoTrack.addRenderer(new VideoRenderer(new VideoRenderer.Callbacks() { 
     @Override 
     public void renderFrame(VideoRenderer.I420Frame i420Frame) { 
      //then check if frame contains yuv format or oes 
     if (frame.yuvFrame) { 
       drawYUV(frame.width, frame.height, frame.yuvStrides, frame.yuvPlanes); 
     } else { 
      drawOes(frame.textureId, frame.width, frame.height); 
     } 
     } 
    })); 
+0

Danke für Ihre Antwort registrieren! Ich habe meine Frage bearbeitet, können Sie einen Kommentar abgeben? – yangyu

Verwandte Themen