本文中如果无特别说明的地方,传输协议都是RTMP,服务器是FMS,播放器指的是Flashplayer。
问题:直播延大
原因1:编码参数未优化
解决1:1)从编码参数上可以减小视频关键帧间隔 2)降低码率。3)将H.264编码的profile降低规格到baseline 4)不要使用B帧
原因2:服务器端缓冲数据过大
解决2:减小流媒体服务器端的缓冲。
原因3:播放器端缓冲设置过大导致延时。
解决3:可以减小播放器缓冲到0.1秒,或设置零缓冲。
原因4:流媒体服务器集群的各个节点之间网络不稳定、推流和下播网络不稳定。
解决4:找ping值偏差稳定、不丢包的节点做边缘服务器。制作工具监控各个视频边缘服务器的带宽使用和连接数。自动报警。
问题:直播延时刚开始正常,后来延时越来越大。播放一段时间后累积到30秒以上的延时。重连后延时又恢复正常。
原因1:网络抖动导致播放器缓冲增加,缓冲数据不能及时播放,反复累积使延时增加。
解决1:播放器限制最大播放缓冲,当播放缓冲超过最大缓存限制的时候加快播放速度5%左右。使播放缓存减少从而减小延时。
如果加快播放速度仍然赶不上延时累积速度,可在编码中嵌入timecode,用来检查延时,当播放器端检查到延时很大,则丢弃缓冲数据,播放最新内容。
原因2:播放器端的下载带宽不足。
解决2:增加客户带宽。
问题:回放播放过程中,反复加载视频
原因:视频采用的是可变码率(VBR)编码。 应该改用固定比特率模式(CBR),CBR模式可以限制最大瞬时码率,从而使视频播放更加平缓。
解决方法:编码参数限制最大码率,或更改为恒定码率。
问题:回放播放缓冲时间长,而且加载缓冲次数比较频繁。
原因:如果播放器的缓冲参数设置过大,会导致加载视频速度慢;如果设置太小会导致反复缓冲。这是2个相互矛盾的问题。而设置固定缓冲不能同时解决以上2个问题。
解决方法:利用编程来实现0.1秒缓冲立即播放,然后边播放边持续增加缓冲,缓冲大小不固定。同时解决以上2个问题。
问题:回放拖拽操作后,视频会停留很久才开始播放。
原因:拖拽后,播放器需要找到一个最近的关键帧才能开始播放。默认关键帧间隔10秒。如果刚好拖拽到一个关键帧的位置,则可以快速播放。否则会导致随机延迟1-9秒播放。
解决:减小关键帧间隔到2秒。
问题:回放往前面拖拽,重新观看,又需要重新加载视频。
原因:视频数据在播放完毕后被立即清理。每次拖拽都从服务器请求数据。
解决方法:开启智能搜索。如果搜索的内容已经下载过,则不从服务器请求数据,拖拽后0.5秒即可播放。智能搜索可降低服务器负载并改进搜索速度。
问题:视频画面被拉伸,有锯齿。
原因:播放器尺寸和视频尺寸不一致导致画面锯齿。
解决方法:设置Video.Smoothvideo属性,平滑拉伸,从而提高画质。或将播放器宽高和视频尺寸设置一致。
问题:回放http视频,需要下载完毕才开始播放,不能边下载边播放。
原因:metaData保存在视频文件尾部,播放器需要下载到metaData才能播放。
解决方法:用 mp4box 或 qt-faststart 工具修复把metaData移动到文件头部,就可以边下载边播放了。