当前位置: 代码迷 >> 多媒体/流媒体开发 >> 写个简略的rtmp服务器,传flv给客户端,可是客户端不知为什么不播放
  详细解决方案

写个简略的rtmp服务器,传flv给客户端,可是客户端不知为什么不播放

热度:1541   发布时间:2013-02-26 00:00:00.0
写个简单的rtmp服务器,传flv给客户端,可是客户端不知为什么不播放
我打开fms3.5server,客户端连接播放视屏,可以正常播放。
关掉fms,自己写了个简单的rtmp server,同样监听1935。
客户端点播放的时候,在握手之后,向服务端传回connect,服务端收到之后给客户端发送windows acknowledgement size, set peer bandwidth, user control message(begin), _result(connect response), onbwdonw。
之后客户端向服务端发送create stream, 服务端再向客户端发送_result(createStream response), 然后接受客户端发来的play, 在收到play之后再向服务端发送set chunk size, user control message(stream is recorded), user control message(begin), onStatus-NetStream.Play.Reset, onStatus-NetStream.Play.Start, RtmpSampleAccess。
然后再向客户端发送一个空音频, onStatus(NetStream.Data.Start), onMetaData, 视频配置帧, 音频配置帧。
最后就开始发数据了,但是客户端那边收到数据没有播放,还是不是出现崩溃,麻烦大家帮我看看是不是过程还有什么不对啊?

在play.start和play.reset的object里面我只写了code,其他level、discription我都没有写,不知道是不是这个原因,还是我在发送视频数据的时候出的问题,我发视频的时候是从flv里面一个tag一个tag的发。

我觉得很奇怪,客户端都发送来了play命令了, 我是按照fms抓的包和rtmp文档的流程来回复客户端的,之后它就应该等着我给它发数据,我抓包看了好像流程没什么问题吧。我觉得它应该收了数据,不知道是什么原因可能丢弃了数据没有播放。

请大家帮我看看吧。 如果要代码我就贴上来

------解决方案--------------------------------------------------------
个人觉得可能server的 chunk封包有问题。另外比较容易出错的是meta data和codec data的发送
  相关解决方案