屏幕共享期间,Tokbox Share System发出声音

时间:2018-01-22 17:17:57

标签: opentok tokbox

我正在尝试通过Tokbox创建一个屏幕共享应用程序,但我无法共享系统音频。相反,它正在使用麦克风来共享音频。你能否建议是否可以共享系统声音(如音乐等)而不是麦克风?

1 个答案:

答案 0 :(得分:0)

在Linux和Mac上无法从JavaScript访问系统音频。正如Adam在评论中提到的那样,您可以在Windows上获得系统音频和屏幕。

对于非Windows,您需要使用本机应用程序将系统音频输出传输回虚拟麦克风,然后使用TokBox正常访问麦克风。

请参阅Access/process system audio with Javascript/Web Audio API

如果您想将屏幕共享与麦克风结合使用,则需要使用新的自定义音频源选项(可从v2.13.0获得)与屏幕共享视频源结合使用:

Promise.all([
  OT.getUserMedia({ videoSource: null}),
  OT.getUserMedia({ videoSource: 'screen' }),
]).then(([audioStream, videoStream]) => {
  const audioSource = audioStream.getAudioTracks()[0];
  const videoSource = videoStream.getVideoTracks()[0];
  const publisher = OT.initPublisher({ audioSource, videoSource });
  session.publish(publisher);
});

如果您要传输2个音轨,则需要使用多个发布者。一个发布者将屏幕共享视频与来自普通麦克风的音频相结合。另一个发布者只有虚拟麦克风(系统音频通过管道传输)而没有视频。您应该使用OT.getDevices()来确定哪个麦克风应属于每个发布者。

您可以使用WebAudio API将来自真实麦克风和虚拟麦克风的音频组合到一个轨道中,这样您只需要一个发布者,但这需要更多的努力。

确保启用enableStereo,并为发布流媒体音乐的发布商设置audioBitrate为64000(或更高)。

如果您需要支持所有操作系统,那么您可以根据用户代理检测操作系统并相应地执行相应的策略。