背景
chromium 浏览器在处理类似 chrome.desktopCapture
这样的视频流请求的时候,大致流程是什么样的呢?初步梳理了一下整个流程,流程还是比较长的,这里给出大概的类图,但只说明其中部分的关键点。
浏览器的 renderer 进程在接收到执行 getUserMedia()
的请求后,首先是由 blink 接受请求,然后转交给 content 中的 renderer 处理,UserMediaProcessor
类处理传入的请求,并通过 mojo 通信请求 browser 进程创建所需要的视频流,browser进程创建对应的视频流后通过调用 UserMediaProcessor
的 OnStreamGenerated()
回调函数来反馈通知。UserMediaProcessor
通过 StartTracks()
来开启对应的视频流,在启动视频流的过程中,传入了回调函数,以便在收到视频帧时传递给需要视频帧的客户。
renderer 进程的处理流程
在 renderer 进程中,相关类图如下所示:
请求视频流的过程处理流程大致如下: