首先我们要明白,黑屏、花屏、闪屏等问题,可能是推流端的问题 , 也可能是播放器的问题 , 遇到这些现象,我们要第一时间用别的播放器(如 VLC,ffplay)试试,如果都出现同样的问题,那么多半是流本身的问题了 , 反之,则很可能是播放器的问题 。
播放黑屏
现象:画面是黑的,没有图像,但是有声音 。
1.主播端摄像头权限问题
无论 Android 还是 iOS,App 使用摄像头都是需要申请授权的,特别是 Android 6.0 以后 , 如果 App 层面不做专门的处理的话 , 很可能出现摄像头权限被禁用的情况 。
如果 App 没有获取到摄像头权限,视频就无法采集成功,从而导致推出来的流只有音频数据 。
解决方案:App 层面肯定要小心处理权限问题,检测到未获取相应权限则禁止开播,或者反复提示主播授予权限 。另外 , 可以询问出现问题的主播是否有摄像头预览画面,如果 App 没有获得权限的话,是没有预览画面的 。
2.主播端编码失败
视频数据采集到后,下一步就是经过编码器,由于参数配置或者某些机型的硬编兼容性问题,很可能数据送入编码器后,编码失败 , 并无输出,从而导致没有视频数据送入到推流模块 。
【手机对着电脑屏幕直播怎样才不会花屏】
解决方案:一般推流 SDK 都会统计推流的实时视频帧率 , CDN 服务端也会有一些帧率监控 , 因此 , 如果发现这些统计得到的推流帧率为 0,同时又确定不是没有采集到数据,那么多半是编码器的原因,可以想办法查看下该机型的日志看看具体的报错信息 。
3.视频解码失败
前面的文章有提到过,当播放器遇到不支持的视频格式,或者数据内容/格式异常,则会解码失败 , 从而导致无解码视频输出 。
针对不支持的格式:
要提前了解播放器本身支持哪些音视频格式 , 如 H.264 , mp4v , aac 等等 , 避免播放不支持的格式
播放器本身遇到的硬解或者软解失败,应该有日志报错,或者抛出异常给应用层提示用户
针对视频数据内容错误:
需要分析码流文件本身,常见的数据内容错误导致的解码失败有如下几种:
送入解码器的帧数据不完整
H.264 的视频码流,缺失了 SPS,PPS 等必要的信息头
iOS 的 VideoToolbox 解码,只支持 avcc 方式打包的 H.264 数据
部分 Android 机型硬编出来的数据有额外的 naul 头
其他等等
- 手机特殊符号组成的案要怎么打出来?
- 如何用苹果手机搜索别人的苹果手机
- 反对小学生玩手机的理论是什么
- 我被骗手机有暗病报警有用吗怎么办
- 手机断触什么原因引起的?
- spacedesk投屏手机灰色
- 手机卡没信号怎么回事
- 求和秦时明月差不多的手机卡牌类游戏
- 网红带货山寨手机后续:下架朵唯、中兴、酷派等12个品牌
- 捡到手机怎么处理