WebRTC iOS:iOS客户端中未显示远程视频

5

我正在尝试使用GoogleWebRTC pod在iOS应用程序中实现WebRTC。我可以在iOS应用程序和Web客户端之间进行视频通话,此时音频/视频都可以正常工作。但是当我在两个iOS设备之间进行视频通话时,没有视频(音频可以正常工作)。我已经检查了是否有远程流,并且确实存在。

let localStream = connectionFactory?.mediaStream(withStreamId: "StreamID")
let audioTrack = connectionFactory?.audioTrack(withTrackId: "AudioTrackID")
let videoSource = connectionFactory?.avFoundationVideoSource(with: mediaConstraint)
let videoTrack = connectionFactory?.videoTrack(with: videoSource!, trackId: "VideoTrackID")
localStream?.addAudioTrack(audioTrack!)
localStream?.addVideoTrack(videoTrack!)
peerConnection?.add(localStream!)

你好,我有同样的问题,你有其他的解决方案吗? - Hiền Đỗ
我也遇到了远程流的问题,你解决了吗? - guru
我确实遇到过这个问题,但是我现在想不起来了。很抱歉,那已经是两年半以前的事情了。 - Rezwan
4个回答

2

1

据我所知,当您首次创建本地视频轨道时,可以添加远程视频轨道,然后当视频轨道从对等连接接收到数据时,它会自动产生帧。以下是来自WebRTC iOS客户端的示例代码:

- (void)createMediaSenders {
    RTCMediaConstraints *constraints = [self defaultMediaAudioConstraints];
    RTCAudioSource *source = [_factory audioSourceWithConstraints:constraints];
    if (_isAudioEnabled) {
        RTCAudioTrack *track = [_factory audioTrackWithSource:source trackId:kDSAudioTrackId];
        [_peerConnection addTrack:track streamIds:@[ kDSMediaStreamId ]];
    }
    if (_isVideoEnabled) {
        _localVideoTrack = [self createLocalVideoTrack];
        if (_localVideoTrack) {
            [_peerConnection addTrack:_localVideoTrack streamIds:@[ kDSMediaStreamId ]];

            // Create remote video track
            RTCVideoTrack *track = (RTCVideoTrack *)([self videoTransceiver].receiver.track);
            [_delegate appRTC:self didReceiveRemoteVideoTrack:track];
        }
    }
}

0
在函数 func rtcClient(client: RTCClient, didReceiveRemoteVideoTrack remoteVideoTrack: RTCVideoTrack) 中,执行一个选择器,在2秒后调用该选择器,然后在该选择器中将轨道添加到远程视图。

0
发现问题了。在创建流和视频轨道时,我给定了一个硬编码的字符串作为id。当建立连接后,本地和远程流的id变成了相同的。提供唯一的字符串作为id可以解决这个问题。

我不认为是这样的。我的两个同行都有相同的轨道ID和流ID,它们连接并传输数据没有任何问题。 - Kyle Redfearn
那我一定做错了什么,因为每当我在ids中提供一个静态字符串值时,视频就无法工作。但是提供一个与其他同行唯一的动态值就可以工作。 - Rezwan
@Rezwan,我不理解你的回答是什么意思PeerConnection.IceServer("stun:stun.l.google.com:19302")。 - guru
@guru,我的问题是VideoTrack的“trackID”在两侧都相同。它们必须不同。 - Rezwan
好的。我的追踪 ID 在本地流和远程流中是不同的,但我仍然在远程流中得到黑屏,您有任何想法吗? - guru
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接