WebRTC ScreenCapturerAndroid
WebRTC ScreenCapturerAndroid
我正在尝试为 android 创建屏幕捕获器应用程序。我已经使用来自 here 的 Camera2Enumerator 库使用视频捕获器设置了 webRTC 部分。我如何修改它以创建预录制的视频捕获器而不是相机捕获器。
谢谢!
只是想更新一下我已经解决了这个问题。我无法分享整个代码,但这里有一个过程可能会有所帮助:
获取预录文件的一帧并存储在字节数组中(必须是YUV格式)
将 VideoCapturer() 替换为以下内容:
fun onGetFrame(p0: ByteArray?) {
var timestampNS = java.util.concurrent.TimeUnit.MILLISECONDS.toNanos(SystemClock.elapsedRealtime())
var buffer:NV21Buffer = NV21Buffer(p0,288,352,null)
var videoFrame:VideoFrame = VideoFrame(buffer,0,timestampNS)
localVideoSource.capturerObserver.onFrameCaptured(videoFrame)
videoFrame.release()
}
其中 p0 是带有帧的字节数组
使用计时器在 startLocalVideoCapture() 中调用此函数(每隔几毫秒...我使用了 10 纳秒)https://developer.android.com/reference/android/os/CountDownTimer
在 startLocalVideoCapture() 中删除这一行--->
VideoCapturer.initialize(
surfaceTextureHelper,
localVideoOutput.context,
localVideoSource.capturerObserver)
我正在尝试为 android 创建屏幕捕获器应用程序。我已经使用来自 here 的 Camera2Enumerator 库使用视频捕获器设置了 webRTC 部分。我如何修改它以创建预录制的视频捕获器而不是相机捕获器。
谢谢!
只是想更新一下我已经解决了这个问题。我无法分享整个代码,但这里有一个过程可能会有所帮助:
获取预录文件的一帧并存储在字节数组中(必须是YUV格式)
将 VideoCapturer() 替换为以下内容:
fun onGetFrame(p0: ByteArray?) { var timestampNS = java.util.concurrent.TimeUnit.MILLISECONDS.toNanos(SystemClock.elapsedRealtime()) var buffer:NV21Buffer = NV21Buffer(p0,288,352,null) var videoFrame:VideoFrame = VideoFrame(buffer,0,timestampNS) localVideoSource.capturerObserver.onFrameCaptured(videoFrame) videoFrame.release() }
其中 p0 是带有帧的字节数组
使用计时器在 startLocalVideoCapture() 中调用此函数(每隔几毫秒...我使用了 10 纳秒)https://developer.android.com/reference/android/os/CountDownTimer
在 startLocalVideoCapture() 中删除这一行--->
VideoCapturer.initialize( surfaceTextureHelper, localVideoOutput.context, localVideoSource.capturerObserver)