使用WebRTC将数据与视频同步

MaM*_*zav 17 javascript video html5 video-streaming webrtc

我正在使用WebRTC从服务器向客户端浏览器发送视频(使用本机WebRTC APIMCU WebRTC像Kurento这样的服务器).

在将其发送给客户端之前,视频的每个帧都包含元数据(如字幕或任何其他应用内容).我正在寻找一种方法将这些元数据发送到客户端,使其保持同步(到实际呈现的时间).此外,我希望能够从客户端(通过Javascript)访问此数据.

我想到的一些选项:

  • 通过WebRTC DataChannel发送数据.但我不知道如何确保数据在每帧的基础上同步.但是我找不到一种方法来确保数据通道和视频通道发送的数据是同步的(再次,我希望获得单帧的精确级别).
  • 以某种方式手动将数据发送到客户端(WebRTC DataChannel,websockets等),其时间戳与视频的时间戳匹配.但是,即使Kurento或其他中间服务器保留视频中的时间戳信息,根据以下答案,没有应用方法从javascript获取视频时间戳: 如何使用webRTC Javascript API访问传出音频RTP时间戳在发送方和接收方的传入音频RTP时间戳?.我想过使用标准视频元素的timeupdate事件,但我不知道它是否适用于帧的精确级别,我不确定它在实时视频中的含义与WebRTC中的相同.
  • 手动发送数据并将其作为另一个应用程序附加到视频TextTrack.然后使用onenteronexit同步读取它:http://www.html5rocks.com/en/tutorials/track/basics/.它仍然需要精确的时间戳,我不知道如何知道什么是时间戳,以及Kurento是否按原样传递它们.
  • 使用WebRTC的统计API手动计算帧数(使用getstats),并希望此API提供的信息是准确的.

最好的方法是什么,以及如何解决我提到的问题?

编辑:需要具有适当帧的元数据的精确同步(在不超过单帧的分辨率下).

小智 3

我怀疑每帧的数据量相当小。我会考虑将其编码为二维条形码图像,并以某种方式将其放置在每个帧中,这样它就不会被压缩删除。或者像这样编码时间戳。

然后,在播放器端,您查看特定帧中的图像并获取数据或如果有。