播放器项目开发
从设计的角度来说,要减少继承,继承带来的复杂度、调试度、难度较大、扩展性较差
继承多代的话会导致代码更新比较困难
1面向对象的五大原则(降低代码的维护成本)
1.1单一职责
让类尽量单一功能,一个类只做一件事情
解封装,独立策略,涉及网络
解码,编解码
解封装不需要解码,会存在冗余
单一职责可以进行单元测试,测试每个模块,保证正确性
1.2开闭原则
对扩展开放,对修改封闭
要增加功能(播放、暂停),不要修改原来的代码
1.3替换原则
一个类的派生类应该可以直接替换基类或者父类
但是不能改变原来父类的代码
1.4接口隔离
不强迫用户使用用户不需要的接口
比如用户不需要知道方法就将其隔离,当用户使用了该用户不需要的接口,当接口改变的时候,类也需要发生改变,增大了修改成本
1.5依赖倒置
尽量依靠抽象来编程,在外部的编程都是基于抽象的接口而不是依靠具体的实现类
修改的话就不会关联很大
外部接口不变,优化内部代码
2音视频同步
应该采用视频同步音频的方式
音频要把数据提供出来
################################
隔离:视频解码部分不会影响音频
QT中怎么判断槽
通过slots,自动生成对应的代码
多次打开,会进行清理
通过定时器来改变滑动条
1.0版本总结
XVideoWidget与播放界面相关,通过重载OpenGL,重写paint,通过join image绘制整个视频的图像。
用OpenGL的好处是可以极大地提高性能。普通电脑绘制,绘制一帧1080p需要十几毫秒,而用3D绘制,只需要3毫秒,性能得到极大的提高。
实现了XSlider滑动条,QT自带滑动条不能点到哪里播放哪里,重载了QT的滑动条
Audio类用纯虚函数来实现封装,所有的实现都是在继承者中
跨平台编译,在windows和Linux都可以进行播放
对窗口进行了重新绘制
熟悉了ffmpeg和QT