将本地PeerConnection转变到WebRTC 1.0

作者:steve…@webrtc.org(原文链接

翻译:刘通

原标题:Transitioning Native PeerConnection to WebRTC 1.0

webrtc-logo

如果你没有使用PeerConnection C++,Java,或者Objective-C的API的话,那么你可以跳过本篇文章。Chrome中WebRTC 1.0的搬移计划有所不同,并将另行公布。

WebRTC规范在过去几年中一直在发展,因此我们有了不同的SDP格式(Unified Plan),各种新的API(其中包括RtpTransceivers),并且删除了部分老旧API(AddStream等)。

新API和Unified Plan SDP格式提供了这些新功能:

         # 早期媒体:当offer发送之后,主叫方可以在接收到应答之前接收媒体

         # 对于指定轨道,支持多个媒体流或不存在媒体流

         # 使用发送方对象,你可以使用sender.setParameters()控制媒体

         # 使用接收方对象,你可以更直接地控制SDP生成的某些指定方面

为了保持原生API体积小且保持最新,我们将会弃用非标准的“备用方案(Plan B)”风格的SDP以及已经从标准中移除的API。我们意识到这将是一个影响很多的人重大改变,因此我们希望在执行之前获得你对此项转移计划的反馈。下面是我们目前的计划。

新的RTCConfiguration选项:SdpSemantics

PeerConnection将有一个新的配置选项,可以与Unified Plan SDP和新的API兼容。 SdpSemantics有两个选项:

         # PlanB:PeerConnection会像现在一样

         # UnifiedPlan:PeerConnection将创建并设置Unified Plan请求/应答。PeerConnection将无法为多个音频或多个视频轨道设置Plan B请求/应答。一些API将无法工作,其他API会变可用(见下文)。

在创建PeerConnection时应该在RTCConfiguration中指定所选的SdpSemantics,并且不能在运行中更改。

新添加的API

配置了UnifiedPlan语意的PeerConnection将可以使用一下API:

         # AddTransceiver()

         # GetTransceivers()

         # RtpTransceiver对象

         # 有RtpTransceiver的OnTrack事件

被移除的API

对于使用PlanB语义配置的PeerConnections,以下API仍然可用,但不适用于UnifiedPlan语义,并且将在未来删除:

         # AddStream():被AddTrack()取代

         # RemoveStream():被RemoveTrack()取代

         # local_streams():被GetSenders()取代

         # remote_streams():被GetReceivers()取代

         # CreateSender():被AddTransceiver()取代

我们正在制定一份迁移指南,帮助你将你的应用程序转换为新的API,并很快发布。

时间线

以下是我们想要提出的搬移计划,以及WebRTC库中将要发生改变的大致时间:

         # 2018年4月底:“Unified Plan”和新API达到稳定。我鼓励每个人都换用UnifiedPlan和新的API。

         # 2018年7月:默认的SdpSemantics更改为UnifiedPlan。同时移除“删除名单”(CreateSender除外)中列出的API。

         # 不早于2018年底:删除PlanB语境,UnifiedPlan成为唯一选择。

我们希望听到你对我们提出的转移计划和时间表的任何想法或疑虑。一旦“Unified Plan”准备好面对正常使用量(本月),我们将更详细地描述这些变化,并根据我们在此收集的意见提出最终的改变机会。

最后感谢WebRTC API团队。

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营