我正在开发一个基于WebRTC的Android应用程序,使用本机实现(org. webrtc:google-webrtc:1.0.24064),我需要随相机流发送一系列位图。
根据我的理解,我可以从org.webrtc.VideoCapturer
派生,在单独的线程中进行渲染,并将视频帧发送给观察者;但是它希望它们是YUV420,我不确定我做的转换是否正确。
这是我目前拥有的:CustomCapturer.java
有没有什么例子可以让我看看做这类事情?谢谢。
我正在开发一个基于WebRTC的Android应用程序,使用本机实现(org. webrtc:google-webrtc:1.0.24064),我需要随相机流发送一系列位图。
根据我的理解,我可以从org.webrtc.VideoCapturer
派生,在单独的线程中进行渲染,并将视频帧发送给观察者;但是它希望它们是YUV420,我不确定我做的转换是否正确。
这是我目前拥有的:CustomCapturer.java
有没有什么例子可以让我看看做这类事情?谢谢。
2条答案
按热度按时间mu0hgdu01#
nmpmafwu2#
我试过用GL手动渲染它,就像杨的回答一样,但在处理图像流时,最终出现了一些撕裂和帧率问题。
相反,我发现
SurfaceTextureHelper
类帮助简化了很多事情,因为你也可以使用常规的画布绘制来将位图渲染成VideoFrame。我猜它仍然在幕后使用GL,因为性能在其他方面是相当的。下面是一个VideoCapturer
的例子,它接受任意位图并将捕获的帧输出到它的观察者:https://github.com/livekit/client-sdk-android/blob/c1e207c30fce9499a534e13c63a59f26215f0af4/livekit-android-sdk/src/main/java/io/livekit/android/room/track/video/BitmapFrameCapturer.kt