0

我正在使用 Twilio 视频会议与 Cordova 一起开发视频直播应用程序。我正在尝试从设备前置摄像头流式传输视频。它在 Android 上运行良好,但我在 iOS 上遇到了一些问题。

我正在使用 cordova-plugin-iosrtc 插件来公开 navigator.mediaDevices API

在连接方法上我收到此错误

TypeError: track must be a LocalAudioTrack, LocalVideoTrack, LocalDataTrack, orMediaStreamTrack

我将代码更改为所需的轨道类型

const { LocalAudioTrack, LocalVideoTrack, connect } = require('twilio-video');

constmediaStream = awaitnavigator.mediaDevices.getUserMedia(constraints); 

const tracks = mediaStream.getTracks().map(track => track.kind === 'audio' ? newLocalAudioTrack(track) :newLocalVideoTrack(track)); const room = awaitconnect('token', { tracks }); 

更改后出现此错误

TypeError: Argument 1 ('track') to mediaStream.addTrack must be an instance of MediaStreamTrack and sometimes this one => typeError undefined isn't an object (evaluating 'tracks.id')

在此先感谢我感谢任何帮助

4

2 回答 2

1

Twilio 开发人员布道者在这里。

当你有MediaStreamTrack对象时,你可以通过options直接将它们传递给Video.connect。因此,您可以执行以下操作:

const stream = await navigator.mediaDevices.getUserMedia(constraints);

const room = await Video.connect(token, { tracks: stream.getTracks() })

这将把你MediaStreamTrack的 s 变成LocalTracks 而你不必担心它。

让我知道这是否有帮助。

于 2019-10-28T02:43:34.953 回答
0

Cordova IOS 编译版本不会像 Safari 在 Web 上那样流式传输相同的媒体流轨道类型,我切换到 Capacitor.js 并使用它的插件,但仍然对我不起作用。

至于这个问题,它不适用于 Cordova cordova-plugin-iosrtc,我们在我们的应用程序中推迟了这个功能

于 2021-10-11T11:13:47.643 回答