android - 将位图转换为 WebRTC VideoFrame

标签 android webrtc yuv

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

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

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

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

最佳答案

    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()) ;

关于android - 将位图转换为 WebRTC VideoFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51494654/

相关文章:

javascript - WebRTC 在本地工作,但不能跨不同的 IP 地址

javascript - 为什么我的 Ice Candidate 请求触发了 6 次而不是 1 次?

video - 在 ffmpeg 中隐藏帧错误中的 8160 DC、8160 AC、8160 MV 错误

android - 在 Ubuntu 11.04 Natty 上进行 Android 调试

android - 使用 NumberPicker 作为 DialogPreference。为什么我的设置不保存?

go - 无法构建对撞机(Go 中基于 websocket 的信令服务器)

ios - CVOpenGLESTextureCacheCreateTextureFromImage 返回错误 6683

android - 如何确定android中的设备启动事件

android - 在 Android studio 项目中将 card.io 源代码作为模块导入

video - YUV文件格式