前言
该文章面向对WebRTC有一定基础的码农,如果完全没了解过WebRTC的朋友,可以点赞并私信我进行一对一辅导哦。
WebRTC-Android SDK自带的实现方式
其实WebRTC已经提供了一个org.webrtc.VideoFileRenderer.java的渲染器,专门用于把画面数据存储到本地文件,该渲染器与SurfaceViewRenderer.java一样实现了VideoSink接口。
通过VideoTrack.addSink(VideoSink sink)方法把渲染器添加到画面轨道中,即开始录制画面。
通过VideoTrack.removeSink(VideoSink sink)方法可把渲染器从画面轨道中移除,即停止录制画面。
mStartRecordBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 开始录制
String filePath = getExternalFilesDir(null).getAbsolutePath() + File.separator + System.currentTimeMillis() + ".y4m";
try {
mVideoFileRenderer = new VideoFileRenderer(filePath, 480, 640, mEglContext);
} catch (IOException e) {
e.printStackTrace();
mVideoFileRenderer = null;
return;
}
mVideoTrack.addSink(mVideoFileRenderer);
}
});
mStopRecordBtn.setOnClick