当前位置: 首页 > Linux

RTMP直播黑屏问题分析及解决方法

时间:2023-04-06 23:33:06 Linux

发现某客户的直播环境使用ffmpeg拉取rtsp流,然后转成rtmp推流。最近更新了ffmpeg版本后,发现播放rtmp时后台会出现黑屏,但是有数据流。如果你使用旧版本的ffmpeg,就没有这个问题。问题分析才刚刚开始出现。这个问题怀疑是关键帧传输问题,因为rtmp的第一个video标签通常包含了h264解码需要的sps、pps等重要信息。如果不发送解码器,是无法解码的,会出现有数据无图像的问题。抓包分析调试信息,vidoetag信息发送正常,可以排除该问题。打印时间戳后发现flash播放视频流时时间戳都是0,改成100就可以正常播放了。到这里发现是时间戳的问题。问题已经解决了。按照rtmp协议的规定,当Type为3时,表示这个chunk的MessageHeader和上一个完全一样。而ffmpeg发送的应该是相对时间戳,但是服务端却把它当作绝对时间戳来处理,从而导致了这个问题。