应该在webrtc回调中做什么“ - (void)peerConnectionOnRenegotiationNeeded:(RTCPeerConnection *)peerConnection”?

时间:2014-08-21 07:41:08

标签: ios objective-c webrtc

我正在尝试在iPad上运行webRTC应用程序(iOS7)。我的设备显示本地视频,一个尝试显示远程视频(添加了流),但远程视频屏幕保持黑色。 在试图弄清楚为什么我的远程视频屏幕是黑色时,我发现了callback

- (void)peerConnectionOnRenegotiationNeeded:(RTCPeerConnection *)peerConnection_ {
    NSLog(@"peerConnectionOnRenegotiationNeeded:(RTCPeerConnection *)%@",peerConnection_);
}

appRTC示例中,它实现如下:

- (void)peerConnectionOnRenegotiationNeeded:(RTCPeerConnection*)peerConnection {
  dispatch_async(dispatch_get_main_queue(), ^{
    NSLog(@"PCO onRenegotiationNeeded - ignoring because AppRTC has a "
           "predefined negotiation strategy");
  });
}

调用此方法时应该怎么做?我问这个因为我认为我的一切都和示例差不多,只是信号不同,但它仍然不起作用。我想我应该在这个回调激发时做点什么,因为我没有像示例那样的“预定义协商策略”。

我的环境:

  • 在iPad3和iPad4上进行测试
  • 两者都运行最新的iOS
  • 使用Xcode版本5.1.1(5B1008)进行开发
  • 我有自己的信令服务器
  • 我还没有设置stun服务器,因为我还在LAN上测试
  • 我尝试过设置一个昏迷的服务器,但没有区别

2 个答案:

答案 0 :(得分:4)

原来我只需要重新创建sdp并发送它,我现在正在使用音频。

答案 1 :(得分:1)

虽然帖子相当陈旧,但黑屏的原因可能与Peer重新协商无关。

就个人而言,我发现我的设备上没有显示远程源(仅限音频),因为我没有强烈引用RTCVideoTrack或RTCMediaStream对象,这意味着每当我尝试时视频轨道都被丢弃利用它。

@property (nonatomic, strong) RTCMediaStream *remoteStream;
@property (nonatomic, strong) RTCVideoTrack *remoteVideoTrack;

通过在子类化的RTCPeerConnection对象中使用这些属性,并在建立WebRTC连接时通过委托调用将对象发送到我的视图控制器,我可以轻松地引用视频轨道并为视频和放大器设置渲染器;音频数据。