播放器项目开发


从设计的角度来说,要减少继承,继承带来的复杂度、调试度、难度较大、扩展性较差
继承多代的话会导致代码更新比较困难

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

【QT项目——视频播放器——开发】相关推荐

  1. Qt FFmpeg视频播放器开发(八):播放器UI改造、高仿QQ影音

      最近把播放器项目进行了更新,决定参照QQ影音的界面进行实现,我现在的实现如下:   下图是真实的QQ影音   相比QQ影音界面,我的实现有一定的差距,主要是控件的配色,以及中间那个动态图,由于没有 ...

  2. Qt FFmpeg视频播放器开发(二):FFmepg基本使用与视频播放

    本篇博客目标:读帧解码显示视频 开始进入ffmepg的开发之旅.音视频的细节知识不统一讲解,我在教程中逐点渗透,容我以雷神的话开篇. 视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议 ...

  3. 【QT项目——视频播放器——音频录制】6.1QAudioFormat音频播放

    基于QT的音频录制(三个类) 6.1QAudioFormat 记录格式 setSampleRate: // 样本率 setSampleSize; // 样本大小 setChannelCount set ...

  4. 【QT项目——视频播放器——解码】5.1decoder-5.10音频重采样

    5.1 avcodec_find_decoder.AVCodecContext.avcodec_parameters_to_context 1.确定解码器,通过avcodec_find_decoder ...

  5. Android进阶:自定义视频播放器开发(下)

    上一篇文章我们主要讲了视频播放器开发之前需要准备的一个知识,TextureView,用于对图像流的处理.这篇文章开始构建一个基础的视频播放器. 一.准备工作 在之前的文章已经说过了,播放器也是一个vi ...

  6. 视频教程-FFmpeg视频播放器开发-C/C++

    FFmpeg视频播放器开发 精通Android应用.音视频开发及JNI,熟悉FFmpeg,主导过多个电商.直播.音视频执法记录仪项目的开发,为企业开发过多款成功的产品.有完整的4G执法记录仪解决方案. ...

  7. 基于NDK、C++、FFmpeg的android视频播放器开发实战-夏曹俊-专题视频课程

    基于NDK.C++.FFmpeg的android视频播放器开发实战-1796人已学习 课程介绍         课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和ht ...

  8. 视频教程-基于NDK、C++、FFmpeg的android视频播放器开发实战-Android

    基于NDK.C++.FFmpeg的android视频播放器开发实战 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿真,计算 ...

  9. 实现在Android本地视频播放器开发

    在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片.标题.时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获 ...

最新文章

  1. Exchange server 2010脱机工作簿故障问题
  2. 网络***技术开篇——SQL Injection
  3. C++ Primer 5th笔记(chap 19 特殊工具与技术)链接指示: extern “C“
  4. scatter的用法 随机颜色_plt.scatter画分类月亮湾散点图
  5. 毛坯房装修需要哪些材料
  6. C++容器的insert()函数有以下三种用法: 最终*it=val;
  7. 杠杆原理的形象演示,你都懂了吗?
  8. 绝地求生6月28日服务器维护,绝地求生6月28日更新到几点 吃鸡6月28日更新内容一览...
  9. java项目怎么导出成jar_如何在eclipse将程序导出成jar文件
  10. 操作系统之I/O管理:4、缓冲区管理(单缓冲、双缓冲、循环缓冲、缓冲池)
  11. 【Flink】FLink Barrier 在流经算子 做 checkpoint 的时候,数据是停止的吗?
  12. 选课系统类图与数据结构图
  13. SharePoint2013 App 开发中 自定义网站栏,内容类型,列表。
  14. javaeye改名之后
  15. 抗衡微软,UCDOS失策了,金山系软件完胜,不是WPS
  16. 计算机科学与技术用惠普星15,暑期最有颜值的学习装备,惠普星14高性能轻薄本必选...
  17. nba2k21那个php是啥,NBA2K21不同版本区别介绍 各版本详细信息及奖励内容一览
  18. (转帖)微服务拆分的原则和方法(2)
  19. turtle画哆啦A梦(不止一个哦 多个有趣的画)
  20. [GIS教程] 7 空间数据查询与空间度量

热门文章

  1. Java Json数据中有双引号未转义的解析报错
  2. 红色卡通感恩节感谢有你节日介绍PPT模板
  3. Dubbo服务测试方法
  4. 用于 Android 开发的 Kotlin 与 Java
  5. 你还在一天三充?华为手机开启这个隐藏省电功能,两天一充很简单
  6. mysql5.7如何启动服务_Mysql 5.7.18安装方法及启动MySQL服务的过程详解
  7. 苹果内购验证(熟称苹果支付回调)java版
  8. 骁龙 835 人工智能技术:机器学习带来个性化体验
  9. mysql创建表时设置外键_mysql创建表时设置外键约束的方法
  10. 关于中国人工智能的三大隐患