Qt音视频开发15-动态切换解码内核的设计

一、前言

动态切换解码内核这个需求也是源自客户的真实需求,既然是动态切换,那肯定是运行期间切换,而不是通过改变标志位重新编译程序来切换,最开始做的就是这种方式,这样就是实现起来简单,但是用起来不够方便,随着编程架构技术的精进,抽象基类的运用水平逐渐提升,发现视频控件UI层可以不用变,不同内核发出的信号一样,UI层接收信号处理就好,至于底层的解码线程,可以动态销毁和指定,可以任意指定使用某种解码线程(ffmpeg内核、vlc内核、mpv内核、厂家sdk内核等),指定后绑定信号到UI就好,UI可以不用管是哪一种内核,拿到数据绘制就好。

为何要这样设计?一方面可以很方便的做不同内核之间差异的对比; 一方面为何满足不同用户需求,比如某些特定格式的文件用vlc可以正常播放,那就可以选择切换到这个内核就好,海康的视频流带了人工智能分析后的方框等,那就用海康的sdk内核就好,当然最通用跨平台最好的当然是ffmpeg内核,性能也是最好的。

  • VideoCore_QMedia=采用qmedia解析(qt自带且依赖本地解码器且部分平台支持)
  • VideoCore_FFmpeg=采用ffmpeg解析(通用性最好)
  • VideoCore_Vlc=采用vlc解析(支持本地文件最好)
  • VideoCore_Mpv=采用mpv解析(支持本地文件最好且跨平台最多)
  • VideoCore_Qtav=采用qtav解析(框架结构最好/基于ffmpeg)
  • VideoCore_HaiKang=采用海康sdk解析
  • VideoCore_DaHua=采用大华sdk解析
  • VideoCore_Y

猜你喜欢

转载自blog.csdn.net/feiyangqingyun/article/details/129140557