SmallChi / JT1078

JT1078协议、GB1078协议、道路运输车辆卫星定位系统-视频通讯协议
MIT License
198 stars 136 forks source link

建议将JT1078.Protocol项目中的音/视频编解码部分抽象为接口,为上层应用项目提供扩展的可能性 #18

Closed china-live closed 5 months ago

china-live commented 5 months ago

变更内容

  1. JT1078.Protocol项目中新建Video目录,将现有的H264目录移动到Video下。
  2. JT1078.Protocol项目音/视频解码/编码抽象定义为接口,为上层项目提供扩展的可能性。

变更理由

  1. 终端上来的视频不一定是H264、也有可能是其它格式。同时Video与Audio相对应,更能体现代码结构的条理性,提升代码的可读性。 2.当前项目音视频解码和编码为强依赖实现,目前实际项目时就遇到,我需要在在自己的项目中引用 JT1078.Flv ,但要自己增加音频部分,原本直接引用NuGet包就可以了,但现在我需要将 JT1078.Protocol和JT1078.Flv源码拷贝过去自行编译修改。 3.音视频编解码本身就是一项相当专业且复杂的工作,我们不可能在这个协议库里把所有音视频编解码方法都实现或集成进来。 4.本质上,协议库和音视频编解码没有直接关系,将音视频编解码相关功能内置到协议库中,会导致协议库臃肿且丧失可扩展性。 将音视频编解码相关功能抽象为接口,让上层应用根据需要自行选择或实现,内置最常用,最基本的默认实现就可以了。

相关影响

  1. 变更后,JT1078.Protocol 项目中原 JT1078.Protocol.H264 命名空间 将同步变更为 JT1078.Protocol.Video.H264
  2. 从现有的H264Decoder提取接口IH264Decoder,原直接使用H264编码的地方,如 H264Decoder h264Decoder = new H264Decoder();变更为 IH264Decoder h264Decoder = new H264Decoder();services.AddSingleton(); 变更为 services.AddSingleton<IH264Decoder,H264Decoder>();
    3.音频相关的和上面第2条类似...
SmallChi commented 5 months ago

感谢建议,新版会合并。