功能结构:
流程介绍:
直连的情况下:本地使用obs把mp4文件推流给red5流媒体服务器 使用rtmp协议 使用vlc从red5流媒体服务器拉流可以播放
代理情况:本地使用obs把mp4文件推流给代理服务器 代理服务器转发到red5流媒体服务器 代理服务器的转发就是我们需要实现的功能。
技术介绍:
- 多线程编程
- netty 不使用编解码器
- scoket
逻辑介绍
本地测试 在代理服务器中开启端口监听 通过端口捕获到数据 解析数据 通过netty转发 到目标服务器red5流媒体服务器 只做简单介绍 里面有很多复杂处理
代码介绍
发送端逻辑 -发送请求
上面三个 是netty的初始化 handler逻辑处理
此处没有使用编解码器
可以看到在通道注册成功以后并且链接建立后以后 对于数据发送没有做任何处理 就是生成一个自定义的消息对象 发送发送做解析
接收端逻辑-接收请求/返回响应数据
接收端根据标识判断是connect还是active 不同逻辑稍微不同 最主要的逻辑就是 和目标服务器链接成功 监听有数据取出来
通过channelread 方法取出目标服务器返回的数据
发送逻辑-接收响应
当数据返回来判断书包是否发送完成 并作对应的操作
至此代理服务器转发rtmp协议数据完成 本地测试通过 通过抓包可以看见完成的交互过程
因为代码比较多 所以只是把重点部分贴了出来 ,想说的是 一般rtmp协议都是用来做直播 使用nginx做处理,使用netty是可以转发rtmp协议数据 不使用编解码器 使用socket传输就可以了。
重要的事情说三遍 netty可以传输rtmp netty可以传输rtmp netty可以传输rtmp
如有错误 请大家指出!!!!
转载请指明出处