Firefox 58版本下sipML5无音频问题求助
解决Firefox 58下sipML5无音频问题(因mozSrcObject被移除)
我前阵子刚碰到一模一样的问题——升级到Firefox 58后,用doubango的SIPml-api.js做的SIP通话突然没了音频。查了Firefox的更新日志才发现,Firefox 58正式移除了mozSrcObject前缀属性,强制使用标准的HTMLMediaElement.srcObject(对应bug 1183495),而SIPml-api.js里正好有两处还在依赖废弃的mozSrcObject,这就是问题根源。
具体修改步骤
你需要打开SIPml-api.js,找到以下两处代码并修改:
1. 修改tsip_stack.prototype.on_media_add_stream函数
原来的代码片段大概是这样的:
if (oMedia.mozSrcObject) { oMedia.mozSrcObject = oStream; } else { oMedia.src = window.URL.createObjectURL(oStream); }
替换成标准属性的判断与赋值:
if ('srcObject' in oMedia) { oMedia.srcObject = oStream; } else { oMedia.src = window.URL.createObjectURL(oStream); }
2. 修改tsip_session.prototype.on_remote_stream_added函数
同样找到里面使用mozSrcObject的代码块,把所有oMedia.mozSrcObject的引用都替换成oMedia.srcObject,判断条件也改成检查'srcObject' in oMedia。
为什么这样改?
Firefox 58之后不再支持带moz前缀的媒体流绑定方式,原来的代码因为尝试给不存在的mozSrcObject赋值,导致音频流无法正确挂载到HTML媒体元素上,自然就听不到声音了。改用标准的srcObject后,既能兼容Firefox 58+,也能适配其他现代浏览器(Chrome、Edge等早就支持标准属性了)。
修改完之后重新部署代码,Firefox下的音频问题应该就能解决了。
内容的提问来源于stack exchange,提问作者Yasser Gutierrez
相关产品推荐
相关产品推荐

