我有以下代码:
$.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 上也有一个更新的代码示例。