Qt音视频开发13-视频解码线程基类的设计

Posted feiyangqingyun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt音视频开发13-视频解码线程基类的设计相关的知识,希望对你有一定的参考价值。

一、前言

这个解码线程基类的设计,是到目前为止个人觉得自己设计的最好的基类之一,当然也不是一开始就知道这样设计,没有个三五年的摸爬滚打以及社会的毒打,是想不到要这样设计的,一方面是要不断提炼各种视频类视频组件的共性作为局部变量,比如通用的参数有视频画面宽度videoWidth、视频画面高度videoHeight、视频画面帧率frameRate、视频旋转角度rotate、音频采样率sampleRate、音频通道数channelCount等。这些共性参数都是在疯狂实战的过程中提炼的,久而久之就出来了。

翻阅Qt源码本身,他里面也基本上都是这种设计思路,有个巨大的好处可以复用这些代码,子类只要继承了这个类,就能直接使用,不需要还在子类中写这些参数变量,函数接口只需要重载实现即可,重载实现了的就调用子类的实现,没有重载的就调用基类的实现,这也是为何c++如此流行的一个重要原因,封装、继承、多态这三大特性成就了c++。

基类的设计优点优势巨大,也不是没有缺点的,缺点就是有部分共性是大部分子类都有的,但是部分没有,或者部分子类没有去实现重载,所以使用的时候万一实例化的子类没有去实现对应接口,就算你调用了,可能没效果,因为默认是基类的,所以有的时候就会很纳闷为何明明调用了函数,但是没有效果,仔细跟进一查原来子类并没有去实现接口,可能该子类是本来就不需要这个接口。

二、效果图

QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解

一、前言

在前一章里介绍了ffmpeg基本概念,完成了ffmpeg对视频软件解码并渲染,实现了基本播放器功能设计。

这篇文章介绍ffmpeg硬件加速解码视频的流程,完成基本播放器设计。

我这里开发视频播放器用到的环境介绍:

ffmpeg版本:  4.2.2
Qt版本    :  5.12.6
编译器类型 : MinGW32bit 

这几篇文章循序渐进编写的内容规划与案例如下:

(1)利用ffmpeg解码视频,通过QWidget渲染解码后的图像,支持进度条跳转、进度条显示,总时间显示,视频基本信息显示。

特点: 采用软件解码(CPU)、只解码图像数据,忽略音频数据,主要是演示了ffmpeg的基本使用流程,如何通过ffmpeg完成视频解码,转换图像像素格式,最后完成图像渲染。

(2)利用ffmpeg的硬件加速接口完成视频解码,支持探测当前硬件支持的加

以上是关于Qt音视频开发13-视频解码线程基类的设计的主要内容,如果未能解决你的问题,请参考以下文章

QT软件开发-基于FFMPEG设计视频播放器-解码音频

QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解

QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解

QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解

QT软件开发-基于FFMPEG设计视频播放器-支持软解与硬解

Qt-FFmpeg开发-视频播放