nexplay播出系统开发过程和技术分析
一,为什么要重新开发
受限自己当时的能力和软硬件环境,原播出系统有一些已知的问题:
1,原来的hdplay采用软解压,cpu运算的方式,整体cpu占用过高。也只有编码部分采用显卡加速编码。
2,采用的libvlc播放引擎,许多东西不可控,个别情况音视频同步有问题。
3,功能代码和界面逻辑在同一个进程中,影响稳定性。
4,需要系统登录后运行,不能做成服务器后台运行。
二,要做成什么样的
基本上就是把原来系统的问题都解决掉
1,全硬件加速,解码,字幕叠加,编码,全显存硬件加速处理;
2,直接用ffmpg自己写播放器,希望可以控制播放器更底层的东西;
3,主要功能直接做成命令行程序,用户接口程序放在另一个进程中,通过共享内存通讯,用户接品程序通过http协议让用户通过浏览器进行操作;
4,使用做成服务器程序,用户不用登录,后台提供服务 ;
三,开发过程
之前也尝试过几次,都因为个人技术或时间都原因没有做成,但也积累了一定的经验,对本次开发也有很大的帮助。最近有有咨询播出系统和播出系统国产系统适配的问题,正好最近时间也相对充足,就又又又把播出系统重写提上了日程。
1 系统选择
没有直接选择用国产系统开发,而是选择了debian13,主要是自己已经在用debian13,国产系统没有用过,但国产系统也是linux,相信比较容易适配。
2 硬件选择
硬件加速的通用性不太好,为了减少难度和适应目前自己的条件,选择了只支持intel核显加速,原因主要有性能够用,稳定可靠,编码质量可靠 ,成本又低赚。
3 软件框架
采用多进程加守护进程的方式,用户接口进程如果意外退出,不影响核心进程的播出任务,守护进程还可以重启意外退出的用户操作进程,基本上可以保证系统永远在线。最开始计划把播出,字幕叠加,编码输出都做成单独进程来的,但考虑难度最后把播出,字幕叠加,编码输出做成一核心进程。用户接口进程通过http供用户通过浏览器进行操作,用户接口进程再通过共享内存和进程间消息机制与核心进程通讯。
四,日前进度
主要功能性代码已经跑通,但细节性的东西还很多,希望最络能成为了个成熟的产品。