poplark / issue-blog

技术博客收集
https://poplark.github.io/issue-blog/
0 stars 0 forks source link

WebRTC Insertable Stream 实现 SEI #14

Open poplark opened 1 year ago

poplark commented 1 year ago

适用场景:视频画面的精准布局、歌词同步、直播答题等。

我们可以在编码后的数据中添加一些meta信息和音视频帧一起发送,在接收端收到音视频帧的时候再把这些meta信息拿出来。 教育场景的白板同步是一个很适合的场景,可以弥补在Web中无法使用SEI的遗憾。 钢琴教学场景中按键信息和音视频完全同步。

VR/AR场景中需要随着音视频同步的摄像头信息,坐标信息等。

远程音视频控制场景中也可以把控制信令打包进音视频信息中。 调用时机:在推流成功后调用。

兼容性:Chrome 86+, Edge 86+, Opera 72+

具体 API:

const senderStreams = transceiver.sender.createEncodedStreams();
const {readableStream, writeableStream} = senderStreams;
const transformStream = new TransformStream({
  transform: insertSEI,
});
readableStream
  .pipeThrough(transformStream)
  .pipeThrough(writeableStream);

function insertSEI(chunk, controller) {
  // ...
}

初探 WebRTC Insertable Stream