Native Code
同龄人。在传输过程中的某个时刻(实际上是在建立连接之后,但可能是在任何时刻),我想在JS对等端启动秒表并执行一些临时操作,实际上是在覆盖视频播放的画布上进行一些渲染。在本地对等端,我希望能够在stopwatch在JS对等端启动的瞬间进行同步,并且只考虑在该瞬间之后记录的接收帧,执行其他类型的处理。我现在所做的(脆弱和有限的解决方案):
-
RTCPeerConnection.iceConnectionState
,我启动JS对等机上的秒表;
-
一开始
webrtc::VideoFrame
到达本地对等我存储帧timespam;
-
这种设计是有限制的,因为我可能想在任何时刻同步,而不仅仅是在建立对等连接时,而且很脆弱,因为我认为WebRTC协议允许出于任何原因(延迟或传输错误)丢弃最初接收到的帧。理想情况下,我希望在JS对等机中选定的同步点上获取一个时间戳,将其发送到本机对等机并能够进行比较
webrtc::视频帧
时间戳。我不能天真地做这件事,因为
VideoFrame::timestamp_us()
很明显有一些我不知道的偏差。我也不能解释
VideoFrame::timestamp()
,这在
api/video/video_frame.h
,
VideoFrame::ntp_time_ms()
-1