-
Notifications
You must be signed in to change notification settings - Fork 350
【QA解答】开始播放后遇到的问题系列
-
本
SDK
采用软解码,受限于用户设备,如果设备良好,请优先检查视频码率以及格式。 -
如果电脑设备性能过低、空闲资源过少,也会导致卡顿。
-
如果想测试当前设备性能,请做好以下准备
- 关闭设备上耗能软件
- 浏览器只开当前播放tab
- 请不要打开Console控制台
- 播放界面最好不要添加过于复杂的UI(开发人员水平参差不齐,业务页面的UI以及逻辑会对播放器性能造成不同程度影响!)
-
检查你的页面是否有阻塞、验证占用资源、时间调度的代码。
-
推荐视频编码(对于大多数用户的电脑设备):
- 直播推荐 1080p/720p 不高于300kbps~1Mbps(帧率不高于30fps)
- 点播推荐 1080p/720p 不高于2Mbps(帧率不高于60fps)
Q: 报错Uncaught (in promise) DOMException: play() failed because the use didn't interact with the document first
- 因为浏览器的安全限制,不允许自动播放、未经用户交互情况下进行播放(一般包含音频)
- 解决1:在初始化播放器的配置的
extInfo
里面,开启autoPlay:true
- 解决2:关闭浏览器 对于 自动播放的安全限制(具体方法自己百度)
- 解决3:视频流去掉音频即可
- 解决1:在初始化播放器的配置的
-
确认
moov box
是否在mdat box
之前- 使用FFMpeg 确定 moov位置:
输出如下,
ffprobe 视频.mp4 -v trace 2>&1 | grep 'mdat\|moov'
type:'moov'
在type:'mdat'
之前就是正常的,否则就是错误。[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd30d004400] type:'moov' parent:'root' sz: 7993 36 815638 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd30d004400] type:'mvhd' parent:'moov' sz: 108 8 7985 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd30d004400] type:'trak' parent:'moov' sz: 5480 116 7985 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd30d004400] type:'trak' parent:'moov' sz: 2268 5596 7985 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd30d004400] type:'udta' parent:'moov' sz: 129 7864 7985 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fd30d004400] type:'mdat' parent:'root' sz: 807609 8037 815638
- 解决方法
- 参考 【视频转码指南】如何用FFmpeg编码合格的 直播 点播 视频 的
mp4 将moov box前置
部分
- 参考 【视频转码指南】如何用FFmpeg编码合格的 直播 点播 视频 的
- 使用FFMpeg 确定 moov位置:
-
大体确定MOOV的范围 调整
coreProbePart
参数大小(0-1 = 0%-100%)
PlayerConfig
的number
和height
可能无法满足您的需求。这时候您需要手动获取播放器的实例也就是PlayerConfig
里面的player
的DOM
元素。
原生用户可以使用document.querySelector(player容器的ID)
。使用现代框架的用户例如vue
或者react
可以通过Ref
的方式进行获取。
Vue
用户请在mounted
阶段获取元素对dom
进行设置,React
用户请在useEffect
里面进行操作。
基于webpack
的工程例如vuecli
,create-react-app
可以把dist
拷贝进你项目里面的静态目录下。一般是public
目录。然后按照exmaple
示例文件进行引入。
请注意index.html
文件。
基于Vite
的工程。就只能采用window
的方式进行引入。因为vite
无法识别非esm
的模块。具体参照vite_vue_ts
.
## Q: 我如果是使用 typescript 开发,我该如何获取类型提示?
本SDK
提供了d.ts
声明文件.您如果是webpack
用户在引入SDK
的时候会自动获取类型提示。Vite
用户则需要把本项目 sdk 内置的d.ts
导入到你自己的全局d.ts
里面以获取类型支持。
您可以通过ISSUE
的方式,按照格式模板进行提问,或者加群925466059
得到帮助。提问前请遵守提问的智慧。
您可以通过
ISSUE
的方式,按照格式模板
进行提问,或者加QQ群925466059
得到帮助。提问前请遵守提问的智慧
。
- 提问注意点(杜绝消极提问):
- 严格按照ISSUE模板提供必要信息
- 严禁
牙膏主义
方式提问:禁止挤牙膏问答式提问(效率低下,维护者作者们都很忙,请一次性把所有信息吐出来(多打点字,多发点图)- 严禁私聊(具体原因看WIKI首页【作者说】为什么不建议私聊)
如果不按照以上方式提问题,作者无义乌积极回应。
微信 | 支付宝 | PayPal |
---|---|---|
TODO |
我还有其他问题。
您可以通过ISSUE
的方式,按照格式模板进行提问,或者加群925466059
得到帮助。提问前请遵守提问的智慧。