QT商业播放器

QT商业播放器

总体架构图

在这里插入图片描述

架构优点:解耦,采用生产者消费者设计模式,各个线程各司其职,通过消息队列高效协作

这个项目是一个基于ijkplayer和ffplayer.c的QT商业播放器,
项目有5部分构成:
前端QT用户界面
后端是集成了ffplayer.c的类--播放的核心逻辑,
中间层有3个模块,
	一是ijkmp类-暴露给前后端向消息队列发消息,
	二是参考ijkplayer实现的单链表消息队列,
	三是用QThread启动的消息循环线程--循环取消息处理业务

下面我来依次说明这些模块:

QT界面

用户界面设计

基本机制

利用QT的信号和槽函数机制,界面事件触发后向消息队列发送消息

  1. 界面元素事件绑定信号
  2. 信号绑定槽函数
  3. 槽函数向消息队列发送对应事件的消息,通知ffplay开始工作
  4. ffplay将视频画面回调到qt界面,声音回调到SDL音频播放流
  5. ffplay内部通过各个信号量控制工作流状态,响应消息只需要调用接口改变ffplay内部的各个信号量即可

元素事件包括:

  • 播放,暂停,停止

  • 快进,快退(按钮seek)

  • 进度条seek

  • 音量控制

  • 文件路径

后端ffplay类

播放器的播放逻辑–一个播放器真正的灵魂部分

主要接口

主要接口就是stream_open(),和stream_close()

  • stream_open负责启动线程和各个队列
  • stream_close负责关闭线程并且回收资源

主要工作流程

  • 解复用线程将从媒体文件中解出来的原始码流包插入到音频包队列和视频包队列</

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值