【QT项目——视频播放器——开发】
播放器项目开发
从设计的角度来说,要减少继承,继承带来的复杂度、调试度、难度较大、扩展性较差
继承多代的话会导致代码更新比较困难
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项目——视频播放器——开发】相关推荐
- Qt FFmpeg视频播放器开发(八):播放器UI改造、高仿QQ影音
最近把播放器项目进行了更新,决定参照QQ影音的界面进行实现,我现在的实现如下: 下图是真实的QQ影音 相比QQ影音界面,我的实现有一定的差距,主要是控件的配色,以及中间那个动态图,由于没有 ...
- Qt FFmpeg视频播放器开发(二):FFmepg基本使用与视频播放
本篇博客目标:读帧解码显示视频 开始进入ffmepg的开发之旅.音视频的细节知识不统一讲解,我在教程中逐点渗透,容我以雷神的话开篇. 视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议 ...
- 【QT项目——视频播放器——音频录制】6.1QAudioFormat音频播放
基于QT的音频录制(三个类) 6.1QAudioFormat 记录格式 setSampleRate: // 样本率 setSampleSize; // 样本大小 setChannelCount set ...
- 【QT项目——视频播放器——解码】5.1decoder-5.10音频重采样
5.1 avcodec_find_decoder.AVCodecContext.avcodec_parameters_to_context 1.确定解码器,通过avcodec_find_decoder ...
- Android进阶:自定义视频播放器开发(下)
上一篇文章我们主要讲了视频播放器开发之前需要准备的一个知识,TextureView,用于对图像流的处理.这篇文章开始构建一个基础的视频播放器. 一.准备工作 在之前的文章已经说过了,播放器也是一个vi ...
- 视频教程-FFmpeg视频播放器开发-C/C++
FFmpeg视频播放器开发 精通Android应用.音视频开发及JNI,熟悉FFmpeg,主导过多个电商.直播.音视频执法记录仪项目的开发,为企业开发过多款成功的产品.有完整的4G执法记录仪解决方案. ...
- 基于NDK、C++、FFmpeg的android视频播放器开发实战-夏曹俊-专题视频课程
基于NDK.C++.FFmpeg的android视频播放器开发实战-1796人已学习 课程介绍 课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和ht ...
- 视频教程-基于NDK、C++、FFmpeg的android视频播放器开发实战-Android
基于NDK.C++.FFmpeg的android视频播放器开发实战 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿真,计算 ...
- 实现在Android本地视频播放器开发
在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片.标题.时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获 ...
最新文章
- Exchange server 2010脱机工作簿故障问题
- 网络***技术开篇——SQL Injection
- C++ Primer 5th笔记(chap 19 特殊工具与技术)链接指示: extern “C“
- scatter的用法 随机颜色_plt.scatter画分类月亮湾散点图
- 毛坯房装修需要哪些材料
- C++容器的insert()函数有以下三种用法: 最终*it=val;
- 杠杆原理的形象演示,你都懂了吗?
- 绝地求生6月28日服务器维护,绝地求生6月28日更新到几点 吃鸡6月28日更新内容一览...
- java项目怎么导出成jar_如何在eclipse将程序导出成jar文件
- 操作系统之I/O管理:4、缓冲区管理(单缓冲、双缓冲、循环缓冲、缓冲池)
- 【Flink】FLink Barrier 在流经算子 做 checkpoint 的时候,数据是停止的吗?
- 选课系统类图与数据结构图
- SharePoint2013 App 开发中 自定义网站栏,内容类型,列表。
- javaeye改名之后
- 抗衡微软,UCDOS失策了,金山系软件完胜,不是WPS
- 计算机科学与技术用惠普星15,暑期最有颜值的学习装备,惠普星14高性能轻薄本必选...
- nba2k21那个php是啥,NBA2K21不同版本区别介绍 各版本详细信息及奖励内容一览
- (转帖)微服务拆分的原则和方法(2)
- turtle画哆啦A梦(不止一个哦 多个有趣的画)
- [GIS教程] 7 空间数据查询与空间度量