You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JS端获取Tokbox视频分辨率以提示用户网络画质问题?

获取Tokbox发布者实时视频分辨率的实现方案

当然可以!Tokbox的JavaScript SDK完全支持获取发布者的实时视频分辨率,甚至能监听分辨率的动态变化——刚好能帮你实现「告知用户画质下降是网络带宽导致」的需求。下面是具体的实现方法:

1. 直接获取当前视频分辨率

当你初始化好OT.Publisher实例后,可以通过访问它的videoElement属性,拿到视频流的实际分辨率(注意区分视频元素的显示尺寸和流本身的分辨率):

// 假设你已经完成了publisher的初始化
const publisher = OT.initPublisher('publisher-container', {
  // 你的发布者配置项,比如摄像头权限、初始分辨率等
});

// 封装获取当前分辨率的函数
function getPublisherResolution() {
  const videoEl = publisher.videoElement;
  if (!videoEl) return null;
  
  return {
    width: videoEl.videoWidth,
    height: videoEl.videoHeight
  };
}

// 调用示例
const currentRes = getPublisherResolution();
if (currentRes) {
  console.log(`当前视频流分辨率:${currentRes.width}x${currentRes.height}`);
}

2. 监听分辨率动态变化(推荐)

更实用的是监听videoDimensionsChanged事件,这样能实时捕捉到Tokbox因带宽适配而调整分辨率的动作,第一时间给用户反馈:

// 监听分辨率变化事件
publisher.on('videoDimensionsChanged', (event) => {
  console.log(`分辨率调整:${event.oldWidth}x${event.oldHeight} → ${event.newWidth}x${event.newHeight}`);
  
  // 这里可以添加你的用户提示逻辑
  const lowQualityThreshold = 640; // 自定义低画质阈值
  if (event.newWidth < lowQualityThreshold) {
    alert('当前网络带宽不足,视频画质已自动降低以保证流畅播放');
    // 或者用更友好的页面弹窗提示
  }
});

3. 注意事项

  • 确保在publisherReady事件触发后再执行分辨率相关操作,避免videoElement未初始化的问题:
    publisher.on('publisherReady', () => {
      // 在这里调用获取分辨率或监听事件的代码
    });
    
  • videoWidth/videoHeight是视频流的原始分辨率,和视频元素的显示尺寸(clientWidth/clientHeight)不是同一个概念,不要混淆。

内容的提问来源于stack exchange,提问作者Jano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 20:04:06