Kotlin

反転ビデオレンダラーの作成

InvertedColorsVideoRenderer はメインのカスタムレンダラです。このクラスは Vonage Video SDK に直接プラグインします。すべてのレンダリングを MyRenderer に委譲します。

主な責務

  • を作成し、設定する。 GLSurfaceView
  • ビデオフレームを受信する Vonage Video SDK (オンフレーム)
  • に渡す。 OpenGL レンダラ
  • ビデオのスケーリングを処理する("fit"、"fill")。
  • Pause/resume レンダリング
  1. InvertedColorsVideoRendererで別のkotlinファイルを作成する。

について InvertedColorsVideoRenderer() コンストラクタは、レンダラーのプロパティを GLSurfaceView オブジェクトを使用します。アプリはこのオブジェクトを使用して、次のようにビデオを表示します。 OpenGL ES 2.0.このためのレンダラー GLSurfaceView オブジェクトが MyRenderer オブジェクトがある。 MyRenderer を拡張したカスタム・クラスである。 GLSurfaceView.Rendererへのレンダリングに使用される。 GLSurfaceView オブジェクト

class InvertedColorsVideoRenderer(private val context: Context) : BaseVideoRenderer() {

    private val view: GLSurfaceView
    private val renderer: MyRenderer

    interface InvertedColorsVideoRendererMetadataListener {
        fun onMetadataReady(metadata: ByteArray)
    }

    init {
        view = GLSurfaceView(context)
        view.setEGLContextClientVersion(2)

        renderer = MyRenderer()
        view.setRenderer(renderer)

        view.renderMode = GLSurfaceView.RENDERMODE_WHEN_DIRTY
    }

    override fun onFrame(frame: Frame) {
        renderer.displayFrame(frame)
        view.requestRender()
    }

    override fun setStyle(key: String, value: String) {
        if (BaseVideoRenderer.STYLE_VIDEO_SCALE == key) {
            when (value) {
                BaseVideoRenderer.STYLE_VIDEO_FIT -> renderer.enableVideoFit(true)
                BaseVideoRenderer.STYLE_VIDEO_FILL -> renderer.enableVideoFit(false)
            }
        }
    }

    override fun onVideoPropertiesChanged(videoEnabled: Boolean) {
        renderer.disableVideo(!videoEnabled)
    }

    override fun getView(): View {
        return view
    }

    override fun onPause() {
        view.onPause()
    }

    override fun onResume() {
        view.onResume()
    }
}
  1. 作成されたコードとその機能を調べる。
  • Vonage Video SDK コール onFrame() 受信フレームごとに
  • にフレームを渡す。 OpenGL レンダラ renderer.displayFrame()
  • 私たちはこう尋ねる。 GLSurfaceView すぐに描く requestRender()
  • これにより、次のようにきれいに分けられる。 Vonage Video SDK 論理と OpenGL ロジックを使用する。
  1. を詳しく見てみよう。 onFrame() ビデオレンダラーのメソッド

から継承されている。 BaseVideoRenderer クラスである。その BaseVideoRenderer.onFrame() メソッドは、パブリッシャー (またはサブスクライバー) が動画レンダラーに動画フレームをレンダリングするときに呼び出されます。このメソッドは InvertedColorsVideoRenderer このメソッドの実装では、フレームの画像バッファ(フレームのYUV表現)を受け取り、それを displayFrame のメソッドを使用する。 MyRenderer オブジェクトを呼び出し requestRender() のメソッドを使用する。 GLSurfaceView オブジェクトがある:

@Override
public void onFrame(Frame frame) {
    renderer.displayFrame(frame);
    view.requestRender();
}

基本的なビデオレンダリング

Vonage Video Android SDK を使用して、Kotlin でカスタムビデオレンダラーを使用してビデオストリームの白黒バージョンを表示する方法を学びます。

以下の言語で利用可能:
Kotlin Swift
手順
1
はじめに
2
はじめに
3
新規プロジェクトの作成
4
Android SDKの追加
5
認証の設定
6
許可を求める
7
反転ビデオレンダラーの作成
8
カスタムレンダラ(MyRenderer)の作成
9
セッションへのストリームの公開
10
カスタムレンダラーをパブリッシャー/サブスクライバーに接続する
11
アプリの実行
12
結論