最近在研究音视频混合录制。作为零基础起步的学习,研究了google的grafika(地址为
https://github.com/google/grafika)其中的视频录制部分,随手记下学习笔记。
grafika视频录制详细流程分析:
CameraCaptureActivity
mRecordingEnabled记录当前是否在录制
触发recording:翻转mRecordingEnabled,并在GL的rendering thread中执行CameraSurfaceRenderer.changRecordingState(mRecordingEnabled)
CameraSurfaceRenderer中也有一个变量mRecordingEnabled,更新,并在onDrawFrame()和onSurfaceCreated()中根据mRecordingEnabled维护mRecordingStatus状态机
CameraSurfaceRenderer内部维护的recording status状态机:
on/off/resumed
TextureMovieEncoder.startRecording()
在TextureMovieEncoder内部new一个工作Thread,以TextureMovieEncoder自身为Runnable,run()的逻辑是创建handler,并且开启消息循环Looper.loop(),