Tutorial: 进阶用法

进阶用法

SDK 初始化代码请参考 入门指南 ,这里假设我们已经完成了初始化,获取了 SDK 实例 livePusher

检测浏览器兼容性

SDK 提供静态方法 checkSupport() 用于检测浏览器对于 WebRTC 的兼容性。

TXLivePusher.checkSupport().then(function(data) {
  // 是否支持WebRTC
  if (data.isWebRTCSupported) {
    console.log('WebRTC Support');
  } else {
    console.log('WebRTC Not Support');
  }

  // 是否支持H264编码
  if (data.isH264EncodeSupported) {
    console.log('H264 Encode Support');
  } else {
    console.log('H264 Encode Not Support');
  }
});

自定义采集配置

SDK 进行音视频质量设置时,可以通过接口 setProperty() 针对分辨率、帧率、码率等单独进行自定义设置。

// 设置分辨率
livePusher.setProperty('setVideoResolution', { width: 1920, height: 1080 });
// 设置帧率
livePusher.setProperty('setVideoFPS', 25);
// 设置码率
livePusher.setProperty('setVideoBitrate', 3000);

回调事件通知

SDK 目前提供了回调事件通知,可以通过设置回调事件来了解 SDK 内部的状态信息和 WebRTC 相关的数据统计。具体内容请参考接口 setObserver()

livePusher.setObserver({
  // 推流连接状态
  onPushStatusUpdate: function(status, message) {
    console.log(status, message);
  },
  // 推流统计数据
  onStatisticsUpdate: function(data) {
    console.log('video fps is ' + data.video.framesPerSecond);
  }
});

设备管理

SDK 提供了设备管理实例 TXDeviceManager 帮助用户进行获取设备列表、切换设备等操作。

const deviceManager = livePusher.getDeviceManager();
let cameraDeviceId = null;

// 获取设备列表
deviceManager.getDevicesList().then(function(data) {
  data.forEach(function(device) {
    console.log(device.type, device.deviceId, device.deviceName);

    if (device.type === 'video') {
      cameraDeviceId = device.deviceId;
    }
  });

  // 切换摄像头设备
  if (cameraDeviceId) {
    deviceManager.switchCamera(cameraDeviceId);
  }
});

调整音量

SDK 提供了音频效果管理实例 TXAudioEffectManager 用来调整音频流的音量。

const audioEffectManager = livePusher.getAudioEffectManager();

audioEffectManager.setVolume(50);

视频效果

SDK 提供了视频效果管理实例 TXVideoEffectManager 用来设置视频流画中画、镜像、滤镜、水印、文本等效果。具体用法请参考 本地混流