JAVA Netty开发部标JT1078流媒体服务器

实现目标

支持JT1078实时视频,支持客户端http-flv和websocket-flv播放。

整体架构

JDK8,SpringBoot2,Netty,websocket,Redis,RabbitMQ,Protobuf。

架构说明
  • 采用SpringBoot2可以简化配置实现自动配置,使用多环境配置使部署更简便,开发效率大大提高。
  • Netty作为JAVA网络编程最强的开源框架,综合性能达到最优,使用它开发JT1078服务端、http-flv服务端。
  • websocket开发websocket-flv服务端。
  • Redis缓存终端信息、上线终端、实时位置等。
  • RabbitMQ作为各模块通信的通道,可以传输位置、图片、上下行指令等。
  • Protobuf作为RabbitMQ的序列化传输协议,序列化性能和传输大小远胜JSON。
技能提升

通过此项目能够学会:

  1. 用JAVA最前沿技术开发web和socket通信程序,领略SpringBoot和Netty的强大魅力。
  2. 学会JDK8的新特性Lambda、Optional、Streams、接口默认方法实现等。
  3. 学会Redis缓存的科学用法。
  4. 学会RabbitMQ各模块的通信方式。
  5. 学会Protobuf的最简单使用方式。很多人都是先写proto定义文件,再用Protobuf工具生成pojo,我们项目里只需要编写pojo加上注解就完成,框架会自动编译生成,开发效率提高几倍,开发如此简单。
  6. 学会websocket和前端的交互。
  7. 学会JT1078协议和FLV协议的socket编程。
  8. 学会部标监控平台难点之一 — 指令系统的开发。网上是没有这方面资料的,要么是实现的质量太差。我们将这个模块开源出来了供大家学习。
  9. 学会前后端分离,接口开发,接口文档生成,职责分明。
  10. 按照这种架构开发,其他web模块、JT808、JT809都能很快的开发出来。整个团队学习成本低上手很快,每个人负责各自的模块,不会出现每个人都能拿到公司的整套源码。整个系统支持跨平台部署(Windows、Linux、MacOS等)。
    JAVA Netty开发部标JT1078流媒体服务器_第1张图片
    application.yml为全局公共配置,application-dev.yml为开发环境配置,application-prod.yml为生产环境配置,logback-spring.xml为日志配置文件。
    JAVA Netty开发部标JT1078流媒体服务器_第2张图片
    启动流媒体服务器只需要执行:
package com.gnss.media;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.socket.config.annotation.EnableWebSocket;

@EnableWebSocket
@SpringBootApplication
public class MediaServerApplication {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(MediaServerApplication.class, args);
    }
}

再结合gnss-web项目,打开flv客户端测试页面,效果:
JAVA Netty开发部标JT1078流媒体服务器_第3张图片

未实现功能

涉及音频相关的对讲、监听未实现,可以采用FFmpeg、EasyDarwin的音频解码,做成JNI给JAVA调用。具体流程如下:

  1. 终端上传RTP g711音频(或者其他音频格式如g726等)包,流媒体服务端解析RTP拿到g711音频流,调用JNI转成pcm再转成aac,封装flv格式发给http-flv或websocket-flv客户端。
  2. web客户端利用AudioContext采集音频pcm发送给流媒体服务器,流媒体服务端调用JNI将pcm转成终端支持的音频格式g711,封装JT1078 RTP包发送给终端。
具体的代码太多了,篇幅有限不一一贴出了,请联系作者提供源代码。

官方网站:http://www.gps-pro.cn
开源地址:https://github.com/gnss-pro
微信:17158638841 或扫描下图
JAVA Netty开发部标JT1078流媒体服务器_第4张图片

你可能感兴趣的:(部标平台)