低版本浏览器(webview)空数据音频文件异常报错

news2024/10/6 14:32:43

问题背景

  1. 监控出现大量静态资源加载异常报警,ios和安卓各系统版本都有(排查了一段时间,发现是QA同学在全量测试,无语凝噎)
  2. QA测试反馈,报告页在收音失败的情况稳定复现播放音频失败(确实有问题,监控有效)

排查路径

首先通过error事件的日志数据,发现ErrorEvent中并没有错误message,头一次见。
在这里插入图片描述
怀疑音频错误事件有什么特殊处理,在网上搜索到media、video等媒体替换标签的错误属于MediaError,可以通过元素上下文的ele.error.code获取上一次错误的信息。

这个错误码总共包含四种类型:

名字说明
MEDIA_ERR_ABORTED1资源请求被用户中断
MEDIA_ERR_NETWORK2因为某些网络原因导致资源加载失败
MEDIA_ERR_DECODE3资源解码出错
MEDIA_ERR_SRC_NOT_SUPPORTED4资源不支持

通过日志确认报错信息为4,即不支持该资源。怀疑格式有问题
在这里插入图片描述
将音频文件下载下来后查看,内容也符合wave标准,但大小仅44Bytes,表示文件无内容
在这里插入图片描述

于是回过头排查资源请求是否异常,通过PerformanceResourceTiming API能力,看到资源的类型是空的,资源类型未能正确识别。
在这里插入图片描述
在这里插入图片描述
怀疑是MIME格式非标准,遂查阅音频相关MIME MDN,发现audio/wave是标准的,但如果编码格式非1,支持度有限。
在这里插入图片描述
又去看了文件内容。可以看到编码格式为1,是PCM(Pulse Code Modulation / 脉冲编码调制),无信号压缩。
在这里插入图片描述
在这里插入图片描述
又陷入僵局,一个好奇心驱使我去查了下为什么会有audio/wav和audio/wave两个MIME,结果这两是一个东西。不过我也还是用charles代理修改响应头,将 content-type: audio/wave 变为 audio/wav,但别没有效果。
在这里插入图片描述

此时,注意到高版本设备中,会触发资源加载异常,但不会触发audio的error事件。通过对比资源数据,发现高版本系统可识别资源类型。
在这里插入图片描述
最后将该文件转为mp3格式,同样有问题。(与格式类型无关?)
在这里插入图片描述
综上排查链路告一段落。

具体原因

  1. 当音频资源数据为空时,部分设备无法解码出资源类型,直接触发MEDIA_ERR_SRC_NOT_SUPPORTED错误。
  2. 该错误冒泡至window下,被外层捕获并统一上报

解决办法

duration为0的音频认为是不合法。

  1. 页面不展示
  2. 错误提示区分
  3. 兜底默认音频

相关文档

在线 十六进制 编辑器
wav文件格式解析
MediaError.code - Web APIs | MDN
【音频处理】WAV 文件格式分析 ( 逐个字节解析文件头 | 相关字段的计算公式 )_韩曙亮的博客-CSDN博客
HTMLMediaElement.error - Web APIs | MDN
MIME types (IANA media types) - HTTP | MDN
Common MIME types - HTTP | MDN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qos实验配置-CBQ方式

目录 对报文进行重标记 对数据报文进行流量监管-接口入方向 将报文加入相应队列 为语音业务配置丢弃策略 配置流量整形-接口出方向 QoS理论讲解_静下心来敲木鱼的博客-CSDN博客_qos 优先级映射https://blog.csdn.net/m0_49864110/article/details/127414766?ops_request_…

MATLAB 绘制数据图

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

python中的socket套接字基础 (客户端服务器信息交互)

文章目录1 socket概述2 socket使用2.1 socket常用函数2.2 简单实现 客户端与服务器 信息交互2.3 多线程实现服务器和客户端信息交互1 socket概述 Python中,我们利用Socket套接字来实现网络通信,可以说套接字是实现网络编程进行数据传输的一种技术手段。S…

UNIX环境高级编程_文件IO_共享文件操作

这篇笔记记录下,多进程(包括父子进程)操作同一个文件,或者同一个文件被同一个进程多次打开时的情况,总是傻傻分不清,必须记录一下了。 1 文件IO_共享文件 分下面四种情况记录。 情况1:同一进程多次open同一个文件 …

SAP MESSAGE :000 消息提示「BUG」

SAP MESSAGE :000 消息提示 错误消息 问题分析 前言&#xff1a;这个问题 DEBUG 模式没有抓到&#xff0c;所以才有了下文&#xff1a; 这是迁移程序时会出现的问题&#xff0c;参见下面的图片&#xff1a; 在迁移前&#xff0c;MATNR 转码 FUNC 就没有规范书写 sy-subrc <…

第十三章 常用类(包装类和String 相关类)

一、包装类 1. 包装类的分类 &#xff08;1&#xff09;针对八种基本数据类型相应的引用类型—包装类 &#xff08;2&#xff09;有了类的特点&#xff0c;就可以调用类中的方法。 2. 包装类和基本数据的转换 &#xff08;1&#xff09;jdk5 前的手动装箱和拆箱方式 public cl…

好友靠JVM成功进入阿里,阿里P8力荐的JVM笔记到底有什么魔力?

大家都是有经验的Java开发人员&#xff0c;想想为何要学习JVM? [面试?调优?装逼? ] 不管出于何种原因&#xff0c;总之你得先学好。那怎么学好呢? 每个人对于JVM的了解可能不一样&#xff0c;这就要考虑到怎么切入 既然大家都学习过Java&#xff0c;那不妨就从Java开始…

数据分析思维(四)|分类/矩阵思维

分类与矩阵思维 1、概念 在进行数据分析工作时&#xff0c;我们往往会涉及到多个核心指标&#xff0c;而对于不同数值核心指标的结合又会产生多种不同的结果&#xff0c;我们将相似结果的内容放到一起进行统一决策就会大大节省数据分析的时间&#xff0c;这种思想我们称之为分…

[python入门㊲] - python的继承

目录 ❤ 什么是继承 ❤ 派生和继承 ❤ 单继承 ❤ 多继承 ❤ MRO[方法搜索顺序](多继承顺序) ❤ 新式类和旧式&#xff08;经典&#xff09;类 ❤ 什么是继承 通过继承基类来得到基类的功能 所以我们把被继承的类称作父类或基类&#xff0c;继承者被称作子类 可…

注册外贸公司需要注意的问题

关于注册海外公司需要注意事项&#xff0c;米贸搜以美国为例&#xff0c;整理以下信息&#xff0c;希望可以帮助到你一、注册美国公司注意事项&#xff1a;1、拟定要注册的美国公司名称三个&#xff08;英文&#xff09;&#xff0c;核名如无重复则可使用&#xff1b;2、美国公…

matlab机电耦合系统相位分岔图

1、内容简介略638-可以交流、咨询、答疑2、内容说明略3、仿真分析clcclose allclear%% parameterglobal CC 48;tspan [0 5]; % 仿真时间x0 [0.1 0.1 0.1 0.1]; % 变量初始值[T,X] ode45(model_diff, tspan, x0); % 调用求解器X3_dot [0;diff(X(:,3))./diff(T)]; % 求解x3的…

【已解决】SpringCloudConfig客户端启动无法读取到配置参数

自己部署了一个Spring Cloud微服务项目&#xff0c;实践Spring Cloud Config分布式配置组件&#xff0c;按照Spring Cloud Config 资料Config&#xff1a;Spring Cloud分布式配置组件 先后创建了Eureka注册中心服务、 Spring Cloud Config Server服务、 Spring Cloud Config Cl…

极客星球 | Elasticsearch入门与实战技术分享

为持续夯实MobTech袤博科技的数智技术创新能力和技术布道能力&#xff0c;本期极客星球邀请了MobTech企业服务研发部工程师勤佳&#xff0c;从Elasticsearch集群安装、DSL语句讲解、深度分页、IK分词器、滚动索引等方面进行了阐述和分享。 一、集群环境安装 elasticsearch 是…

节后转岗“浪潮”来了!瞅准“趋势向上”的行业!

“跨行跨岗人员&#xff0c;怎么能顺利转行&#xff1f;”的话题一直存在&#xff01;成功人士给出一条转岗转行的原则&#xff1a;迁移到技能相近但趋势向上的岗位。那么&#xff0c;什么叫“技能相近”和“趋势向上”呢&#xff1f;让我们来看看。趋势向上除了技能相近&#…

现阶段元宇宙经常偏离原有的发展轨道,使其失去该有的功能和意义

人们总是会自然地陷入到约定俗成的俗套之中。对于元宇宙&#xff0c;同样未能免俗。即使是那些处于头部的玩家&#xff0c;亦不例外。比如&#xff0c;扎克伯格就仅仅只是将元宇宙看成了一个将脸书带离泥潭的工具&#xff0c;一味地迎合资本&#xff0c;而最终忽略了元宇宙最本…

日常避坑--input输入框type=number仍可以输入“e“,“.“等符号

问题发现在使用ElementUI的input框时候&#xff0c;我们有时候需要只让用户输入数字类型。这个时候你可能就会想到<input type"number">,思路没错&#xff0c;但是踩着坑啦。我定义了一个number类型的input框但是&#xff0c;输入框仍旧可以输入"e",…

hadoop安装(二、hadoop)(备忘)

hadoop安装hadoop更改文件配置配置core-site.xml配置hadoop-env.sh配置hdfs-site.xml配置mapred-site.xml配置yarn-site.xml配置环境hadoop安装安装hadoop 紧接上文&#xff0c;解压过的hadoop內部文件为 再进入etc内部的hadoop 修改hadoop313的权限 在/opt目录下&#xff0…

分享24个网页游戏源代码,总有一个是你想要的

分享24个网页游戏源代码 24个游戏源代码下载链接&#xff1a;https://pan.baidu.com/s/1gYJlj8enJbh5mFS_wMaZBA?pwd4ncb 提取码&#xff1a;4ncb 下面是项目的名字&#xff0c;我放了一些图片&#xff0c;大家下载后可以看到。 Html5JS网页版捕鱼达人游戏 HTML5水果忍者游戏…

杂谈---名言警句记录

我们总喜欢拿顺其自然来敷衍人生道路上的荆棘与坎坷,却很少承认真正的顺其自然其实是竭尽所能之后的不强求,而并非两手一摊的不作为.没有那一次巨大的历史灾难,不是以历史的进步作为补偿.今日长缨在手,何时缚住苍龙?男人遇到真爱时第一反应是胆怯&#xff0c;女人遇到真爱的第…

这份2023软件测试面试技巧,助你拿下满意offer

求职&#xff0c;就像打仗&#xff0c;不仅是一场挑战自己的战斗&#xff0c;也是一场与用人单位的较量。而求职者只有准备足够充分&#xff0c;才能在这场毫无硝烟的“战场”上取得胜利。那么软件测试面试需要做哪些准备以及软件测试面试需要哪些技巧呢&#xff1f;1、熟悉岗位…