"trackPublished"事件未在 twilio-video Javascript SDk 中触发



我有以下代码:

$.getJSON('/video/getToken', function (data, status) {
    identity = data.identity;
    navigator.mediaDevices.getUserMedia({
        audio: true,
        video: {width: 320, height: 240}
    })
        .then(function (mediaStream) {
            console.log("Obtained " + mediaStream.getTracks() +" from local and joining room" + roomName);
            var connectOptions = {
                name: roomName,
                logLevel: 'off',
                tracks: mediaStream.getTracks(),
                preferredVideoCodecs: ['VP9', 'VP8']
            };
            return Video.connect(data.token, connectOptions);
        })
        .then(roomJoined)
        .catch(function (error) {
            log('Could not connect to Twilio: ' + error.message);
        });
});
function roomJoined(room) {
    const localParticipant = room.localParticipant;
    localParticipant.on('trackPublicationFailed', function(error, localTrack){
        console.log('Failed to publish track %s to room "%s": %s', localTrack,roomName, error.message);
    });
    localParticipant.on('trackPublished', function(localTrackPublication){
        console.log('Succesfully published track %s  with name %s to room "%s"', localTrackPublication.trackSid, localTrackPublication.trackName, roomName);
    });
}

根据文档,当参与者将媒体发布到房间并且"跟踪发布失败"时,将触发"跟踪已发布"事件 发布失败时触发事件。然而,在我的情况下,似乎没有一个事件被触发。

我可以验证曲目实际上已发布到房间,但仍然没有触发"trackPublishing"事件。

1.6.1 的 twilio-video铬: 63乌班图: 16.04

Twilio开发者布道者在这里。

我看到你在GitHub上也问过这个问题。只是想在这里为后人添加答案:

对不起,你遇到了这个。我相信这种行为是设计使然。在连接解析之前,SDK 可能会了解在连接时成功发布的一组轨道(例如,您在示例中发布的本地音频轨道和本地视频轨道(。这些将在 LocalParticipant 的 trackPublications 集合中同步提供,因此我们不会为这些事件引发"trackPublishing"事件。我们仅针对在连接期间尚未完成发布或在连接后通过 publishTrack 发布的 LocalTracks 引发"跟踪已发布"事件。不过,我看到我们没有在 CHANGELOG.md 中提到这一点。对不起!

GitHub 上也有一个更新的代码示例。

最新更新