使用ffmpeg制作视频播放器(分享源码)

使用ffmpeg制作c++视频播放器(分享源码)

    项目地址: 点击打开链接,欢迎pr。

    本项目采用ffmpeg解码视频文件,使用多线程处理解码等操作,是学习多线程的不错的机会,在这个项目开发过程中巩固了不少多线程的知识,视频的处理主要是ffmpeg,音频采用SDL播放,界面使用QT,使用QTmer定时器去刷新一帧帧的视频。音视频同步的采用视频追逐音频的方式实现的同步,缺点是当视频线程处理缓慢的时候会出现视频过慢,但是一会就回追上音频,这种现象出现的非常少。项目的结构如下:



   1,项目中的多线程

  线程使用的是Qt自带的QThread,主要有两条线程,一个解压音视频文件获取音视频包的线程,一个解码视频包将视频包中的视频帧读出到帧队列的线程。除了这两个线程另外还有一个音频处理 的回调函数,和一个刷新视频的定时器,这几部分构成了整个项目的骨架。本项目使用QWaitCondition,QMutex和QMutexLocker保护线程安全,使用两个线程安全的队列分别存储视频包,视频帧。

2,关于音视频同步

       音视频同步是这个项目最复杂的部分了,弄了好久,最后还是参考网上的教程代码实现了同步。由于音频是线性存储在音视频文件中的&

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值