音视频播放异常现象总结
播放卡顿或者卡住:
1 流媒体不发流给客户端,客户端停在当前画面不动也不销毁,也不重拉流;
2 弱网环境,tcp乱序,且发包间隔时间比较大,播放器收一包耗时较多,导致解码异常卡主;
3 流媒体(发流端)数据插入一些增强帧,其他的P帧等(一般是某些公司的定制)导致播放器得到的数据不是一个连续的GOP;解码花屏或者直接跳过;
4 播放器 音视频解码使用同一个线程,视频解码超时阻塞音频以及后续的 视频,播放卡顿;
5 国标PS封装,PSM里有音视频,但是流里边只有单路视频或者音频,结合某些播放库的机制要等待复合流,或者视频像音频同步,导致卡主或者不显示
6 帧率过高,实时流,渲染来不及消耗,解码为了不阻塞数据接收,进而解码后丢帧(一般不在解码前丢帧,因为会影响解码是否成功),导致显示卡顿跳变;
loading。。。。。
秒开:
一般是 流媒体来做;流媒体开辟一个GOP容器, 当一个播放端去流媒体拉流的时候,流媒体要将容器中当前帧(不是I帧的话)前边的GOP快速刷出去,保证播放器能画面秒开
如果是流媒体推流也一样,流媒体在接收数据流解封装成帧的时候,没遇到I帧,清理一下GOP容器,遇到非I帧,就一边输出数据,一边送给容器,这样保证每次不管是推流还是被拉,都能秒开;
当然流媒体接收数据流要从I帧开始处理,否则流媒体接收P帧开始处理,此时有客户端过来拉流,没有I帧也就没有GOP容器内容,也无法秒开;
RTSP拉流下载:
1、 视频下载方式有很多,如直接http协商后,直接接收数据流;比如 http接口下载NVR数据;海大宇一般有自己的http接口可以支持http直接在响应数据里携带录像视频,如下
2、另外也可以通过RTSP下载,设置高倍速,但是要注意这种倍速拉流代替下载的方式,会出现(接收端)数据来不及接收/(发送端)发不出去,而阻塞在发流端大把数据,所以要根据socket的可读可写状态实时调整送流状态(暂停,继续),socket状态 reback到读文件(要下载的录像文件)模块;
减少传输延时:
1、选择正确的协议,比如,RTSP。RTMP,就比HLS(TS切片)好;
2、发送端阻塞数据检测,进而一定策略丢数据,或者是调整编码参数,降低编码质量,但是要有好的拥塞检测程序;
3、UDP就比TCP要好,没有丢包重传机制,但UDP可能会丢包
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-05-11 关于多线程互斥