简单的RTSP服务器和手机推流服务器

本文相关代码位于:点击打开链接


整个服务器基于我自己封装的跨平台网络中间件k_util开发,包含手机推流服务器和RTSP服务器。实现的功能就是,手机采集音视频流推到服务器,再通过RTSP客户端向服务器请求观看手机采集流。


推流服务器与我之前开发的Android采集音视频流客户端配合,它们之间交互用的是我定的私有协议。但信令部分还是用的Json格式,Json解析通过集成JsonCpp代码实现。音视频流都通过RTP打包,这样后面的RTSP服务器只需要透传RTP包即可。视频为H264裸流,音频为AAC,采用RFC3640打包方式。里面还打包括H264裸流写文件的测试代码,主要是在代码调试阶段看手机端视频编码打包是否正确的。H264拼帧的代码是参考FFmpeg的相关代码。还包括AAC写文件的测试代码,这个只有AAC编码后打上ADTS头才有效,也是用于调试阶段看音频编码是否正确的。在确认代码正确后,AAC码流就没有打ADTS头了,而是打上了AU Header,这样AAC写文件的测试代码就没用了。


RTSP服务器实现得比较简单,只支持RTP Over TCP方式。协议解析都是我自己实现的,没有参考第三方代码。Describe返回SDP信息在网上找了一个样例再自己修改的,AAC的fmtp信息的构造参考了网上的代码。RTSP服务器通过Vlc,ffplay和我自己写的RTSP播放器都测试通过。


Android采集音视频流客户端代码在这里:点击打开链接

我自己写的RTSP播放器代码在这里:点击打开链接

你可能感兴趣的:(简单的RTSP服务器和手机推流服务器)