将位图转换为 WebRTC VideoFrame

n1x*_*xx1 7 android yuv webrtc

我正在使用本机实现 (org.webrtc:google-webrtc:1.0.24064) 开发基于 WebRTC 的 Android 应用程序,我需要发送一系列位图以及相机流。

据我了解,我可以从org.webrtc.VideoCapturer一个单独的线程派生并进行渲染,并将视频帧发送给观察者;但是它希望它们是 YUV420,我不确定我是否在进行正确的转换。

这是我目前拥有的:CustomCapturer.java

有没有我可以做这种事情的例子?谢谢。

Yan*_*ong 3

    YuvConverter yuvConverter = new YuvConverter();
    int[] textures = new int[1];
    GLES20.glGenTextures(1, textures, 0);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D,GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_NEAREST);
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
    TextureBufferImpl buffer = new TextureBufferImpl(bitmap.getWidth(), bitmap.getHeight(), VideoFrame.TextureBuffer.Type.RGB, textures[0], new Matrix(), textureHelper.getHandler(), yuvConverter, null);
    VideoFrame.I420Buffer i420Buf = yuvConverter.convert(buffer);
    VideoFrame CONVERTED_FRAME = new VideoFrame(i420Buf, 180, videoFrame.getTimestampNs()) ;
Run Code Online (Sandbox Code Playgroud)