Opus在安卓mdict兼容性的临时解决方案

好不容易把oed now的4G多的发音文件给转成600+M的opus,结果竟然在安卓MDict上播不了,这能忍吗?想起之前倒腾大英百科时发现audio、video这些html5标签在mdict是支持的(应该说是android的浏览器引擎支持),那么就想通过标准html5方法绕过软件支持问题。

mdx格式的发音标准模式为<a href="sound://...">[button_element]。不过不知为何,安卓MDict在这种模式下不支持opus(经测试,DictTango以及win版GoldenDict-ng支持,所以词典本身没问题)。
不过好在opus是现代浏览器规范要求支持的格式,所以可以通过audio方式绕过这一兼容性问题。我没有测试上述格式中的不受支持的文件格式的地址是否会被正确解析,所以就采用了修改mdx的方式:
<a><audio><source src="..."></audio>[button_element]</a>
然后通过js添加播放函数,audio元素具有原生js函数play(),并且具有事件ended(onended)记录播放结束。如此可以让buttom在播放时样式改变,播放后复原。
p.s. 直接在js里添加mdd中的文件可能会导致无法读取,应该是词典软件会在加载词条时将href之类的属性修改成词典内部格式,js添加就没办法了。

4 个赞