java编写 rtmp协议传输视频数据

功能结构:

在这里插入图片描述

流程介绍:

直连的情况下:本地使用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

如有错误 请大家指出!!!!

转载请指明出处

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值