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

如何提取安卓电视当前播放视频流的帧率(FPS)?

提取播放中视频片段的帧率(FPS)方法

针对你无法获取流URL或路径的场景,分不同服务类型提供可行方案:

网页端自有服务

  • 用浏览器原生Media API:如果你的服务是网页形式,直接操作页面内的<video>元素即可。等视频加载元数据后,读取video.videoTracks[0].frameRate就能拿到标称帧率;要是想获取排除卡顿丢帧后的真实播放帧率,可以自行统计:
let lastTimestamp = 0;
let frameCount = 0;
let actualFps = 0;

const videoElement = document.querySelector('video');
videoElement.addEventListener('timeupdate', () => {
  const currentTime = videoElement.currentTime;
  if (lastTimestamp !== 0) {
    const timeDiff = currentTime - lastTimestamp;
    frameCount++;
    // 每1秒计算一次实际帧率
    if (timeDiff >= 1) {
      actualFps = frameCount / timeDiff;
      frameCount = 0;
      lastTimestamp = currentTime;
      // 此处可将actualFps传入你的自有服务
      console.log(`实际播放帧率: ${actualFps.toFixed(2)} FPS`);
    }
  } else {
    lastTimestamp = currentTime;
  }
});
  • 嵌入YouTube视频的情况:通过YouTube IFrame API初始化播放器后,没有直接返回帧率的接口,但可以用两种方式近似获取:一是根据player.getVideoPlaybackQuality()返回的画质等级(比如hd1080对应60FPS、hd720对应30FPS)匹配标称帧率;二是用上面的实际帧率统计方法,实时计算播放中的真实帧率。

原生端自有服务(移动端/桌面端)

  • 借助平台媒体框架:Android用ExoPlayer的话,通过TrackSelector获取当前选中的媒体轨道,轨道信息里包含标称帧率;iOS用AVPlayer的话,从AVPlayerItem.tracks中取出对应AVAssetTrack,读取nominalFrameRate属性即可。
  • 实时统计实际帧率:监听视频帧的渲染回调(Android可监听Surface的帧回调,iOS用AVPlayerLayer的渲染通知),统计单位时间内的渲染帧数,得到真实播放帧率,这种方法能反映网络或设备性能导致的帧率波动,准确度更高。

关键提示

  • 标称帧率是媒体文件的设定值,实际播放帧率可能因网络卡顿、设备性能不足低于标称值,可按需选择获取方式。
  • 自适应比特率的流媒体可能动态切换帧率,需要持续监测更新数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:12:12