chrome 插件 抓取网页qq聊天记录(Firefox屏幕共享Electron屏幕和本地播放的背景音的选择界面)

优采云 发布时间: 2021-11-06 18:18

  chrome 插件 抓取网页qq聊天记录(Firefox屏幕共享Electron屏幕和本地播放的背景音的选择界面)

  Agora Web SDK NG 支持在 Windows 平台的 Chrome 浏览器(74 及以上版本)上同时共享屏幕和本地背景声音。调用方法时需要设置withAudio参数为enable。

  此设置后,该方法将返回一个列表,其中收录屏幕共享的视频轨道对象和本地播放背景声音的音频轨道对象。

  AgoraRTC.createScreenVideoTrack({

encoderConfig: "1080p_1",

}, "enable").then([screenVideoTrack, screenAudioTrack] => {

/** ... **/

});

  注意:

  

  电子屏幕共享

  Electron 屏幕共享的选择界面需要你自己绘制。为了方便快速集成,我们提供了一个默认的选择界面。

  默认界面

  如果选择使用默认界面,在Electron下使用屏幕共享和在Web下操作没有区别。直接调用就行了。

  AgoraRTC.createScreenVideoTrack({

encoderConfig: "1080p_1",

}).then(localScreenTrack => {

/** ... **/

});

  调用后,SDK 会提供自己的默认界面,供最终用户选择要共享的屏幕或窗口,如下图所示:

  

  自定义界面

  如需自定义选择界面,请参考以下步骤:

  调用 SDK 提供的 AgoraRTC.getElectronScreenSources 方法获取可共享的屏幕信息。Sources 是源对象的列表。源收录共享源的信息和源 ID。源的属性如下:

  

  AgoraRTC.getElectronScreenSources().then(sources => {

console.log(sources);

})

  根据来源属性,使用HTML和CSS绘制选择界面,让用户可以选择要共享的屏幕来源。source属性与屏幕共享选择界面的对应关系如下:

  

  获取用户选择的sourceId。

  调用该方法,将sourceId填入electronScreenSourceId,即可创建对应的屏幕分享流。

  火狐屏幕共享

  Firefox 屏幕共享需要通过设置 screenSourceType 来指定共享屏幕的类型。screenSourceType的选择如下:

  AgoraRTC.createScreenVideoTrack({

screenSourceType: 'screen' // 'screen', 'application', 'window'

}).then(localScreenTrack => { /** ... **/ });

  Firefox 不支持 Windows 平台上的应用程序模式。

  同时共享屏幕和开始视频

  由于一个 AgoraRTCClient 对象只能发送一个视频轨迹,如果你想同时在一个发送者上分享屏幕和启动相机视频采集,你需要创建两个 AgoraRTCClients 来发送屏幕共享轨迹所有的方式和相机一路跟踪。

  async function startScreenCall() {

const screenClient = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" });

await screenClient.join("", "");

const screenTrack = await AgoraRTC.createScreenVideoTrack();

await screenClient.publish(screenTrack);

return screenClient;

}

async function startVideoCall() {

const videoClient = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" });

await videoClient.join("", "");

const videoTrack = await AgoraRTC.createCameraVideoTrack();

await videoClient.publish(videoTrack);

return videoClient;

}

Promise.all([startScreenCall(), startVideoCall()]).then(() => { /** ... **/ });

  如果自己订阅,会产生额外的计费,如图:

  

  Agora 建议为避免重复计费,在每个客户端成功加入频道后,将返回的 uid 存储在列表中。每次*敏*感*词*用户发布的事件时,首先判断该曲目是否为本地曲目,如果是则不订阅。

  开发注意事项

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线