猎豹浏览器不支持HTML5多轨音轨API——因其基于陈旧Chromium 60–70内核,未实现audioTracks/videoTracks等Chrome 79+才稳定支持的接口,调用返回空列表或报错,TV版更全面阉割;替代方案为服务端分轨导出+前端Audio切换或Web Audio手动同步。

猎豹浏览器本身不支持 HTML5 多轨音轨(audioTrack / videoTrack API)——这不是“失效”,而是压根没实现。它基于较老的 Chromium 内核(长期停留在 60–70 版本区间),而多轨音轨控制依赖 HTMLMediaElement.audioTracks 和 audioTracks[i].enabled 等现代 API,这些在 Chrome 79+ 才稳定可用,猎豹从未跟进。
为什么 audioTracks 返回空数组或报错
这是典型内核能力缺失表现,不是配置或权限问题:
-
document.querySelector('video').audioTracks返回AudioTrackList { length: 0 },哪怕视频文件内嵌多语言音轨(如 MKV/MP4 中的多 AAC 流) - 调用
video.audioTracks[0].enabled = true会直接报TypeError: Cannot set property enabled of undefined - 开发者工具的
Application → Frames → Media面板里也看不到音轨列表(Chrome/Edge 可见)
TV 浏览器(含猎豹 TV 版)根本无多轨 API 支持
TV 端浏览器普遍裁剪严重,猎豹 TV 版甚至去掉了部分 Web Audio 接口。实测发现:
- 所有
audioTracks/videoTracks/textTracks属性均存在但恒为空 -
mediaSource.isTypeSupported('audio/webm; codecs="opus"')返回false,即使文件能播放 - 无法通过
加载外挂字幕(textTracks不触发addtrack事件)
替代方案:服务端混音或前端单轨切换
想在猎豹或 TV 浏览器上实现“多语言切换”,只能绕过原生轨道机制:
立即学习“前端免费学习笔记(深入)”;
-
后端提前把不同语言音轨分别导出为独立
.mp3或.aac文件,前端用切换src并load()+play() - 若需同步播放(如主视频 + 解说),用
Web Audio API加载多个AudioBuffer,手动对齐startTime播放(注意 iOS Safari 仍需首次 touch 触发音频上下文) - 避免使用
preload="metadata"—— 猎豹对此支持极差,容易卡在 loading 状态;改用preload="auto"并监听canplaythrough事件
真正容易被忽略的是:猎豹对 AudioContext 的初始化极其敏感,new AudioContext() 必须在用户手势(click/touchstart)回调中首次调用,否则后续所有音频操作都会静音或失败——这点比桌面 Chrome 严格得多。









