FFmpeg开发(六)——Qt视频播放器之封装音频类(参考了暴风影音、迅雷影音)

上一篇介绍了,封装FFmpeg类。

Qt视频播放器之封装FFmpeg类(参考了暴风影音、迅雷影音)

之前的链接大家可以点击参考:

FFmpeg开发(四)——Qt实现一个视频播放器(参考了暴风影音、迅雷影音)

FFmpeg开发(五)——Qt视频播放器之封装FFmpeg类(参考了暴风影音、迅雷影音)

FFmpeg开发(六)——Qt视频播放器之封装音频类(参考了暴风影音、迅雷影音)

FFmpeg开发(七)——Qt视频播放器之播放列表类(参考了暴风影音、迅雷影音)

FFmpeg开发(八)——Qt视频播放器之多线程的使用(参考了暴风影音、迅雷影音)

FFmpeg开发(九)——Qt视频播放器之快进滑动条(参考了暴风影音、迅雷影音)

实现的效果如下:

本篇介绍封装音频类。

#include <QObject>class AudioPlay
{
public:static AudioPlay *Get();//单例模式virtual bool Start()=0;//开始virtual void  Play(bool isplay)=0;//是否播放virtual bool Write(const char *data,int datasize) = 0;//将音频写入virtual void Stop()=0;//停止virtual int GetFree() = 0;//获取剩余空间virtual int setVolume(int iVol) = 0;//virtual ~AudioPlay();int sampleRate = 48000;//样本率int sampleSize = 16;//样本大小int channel = 2;///通道数
protected:AudioPlay();
};
#include <QAudioOutput>
#include <QMutex>
class XAudioPlay :public AudioPlay
{
public:QAudioOutput *output = NULL;QIODevice *io = NULL;QMutex mutex;void Stop(){mutex.lock();if (output)//为打开AudioOutput{output->stop();delete output;output = NULL;io = NULL;}mutex.unlock();}//首先设置播放的格式以及参数bool Start(){Stop();mutex.lock();QAudioFormat fmt;//设置音频输出格式fmt.setSampleRate(48000);//1秒的音频采样率fmt.setSampleSize(16);//声音样本的大小fmt.setChannelCount(2);//声道fmt.setCodec("audio/pcm");//解码格式fmt.setByteOrder(QAudioFormat::LittleEndian);fmt.setSampleType(QAudioFormat::UnSignedInt);//设置音频类型output = new QAudioOutput(fmt);io = output->start();//播放开始mutex.unlock();return true;}void  Play(bool isplay){mutex.lock();if (!output){mutex.unlock();return;}if (isplay){output->resume();//恢复播放}else{output->suspend();//暂停播放}mutex.unlock();}int GetFree(){mutex.lock();if (!output){mutex.unlock();return 0;}int free = output->bytesFree();//剩余的空间mutex.unlock();return free;}bool Write(const char *data, int datasize){mutex.lock();if (io)io->write(data, datasize);//将获取的音频写入到缓冲区中mutex.unlock();return true;}int setVolume(int iVol){output->setVolume(iVol);}
};AudioPlay::AudioPlay()
{
}AudioPlay::~AudioPlay()
{
}AudioPlay * AudioPlay::Get()
{static XAudioPlay ap;return &ap;
}

本篇内容参考了网络上的内容。

下一篇介绍播放列表类:

FFmpeg开发(七)——Qt视频播放器之播放列表类(参考了暴风影音、迅雷影音)

本文原创作者:冯一川(ifeng12358@163.com),未经作者授权同意,请勿转载。

FFmpeg开发(六)——Qt视频播放器之封装音频类(参考了暴风影音、迅雷影音)相关推荐

  1. FFmpeg开发(八)——Qt视频播放器之多线程的使用(参考了暴风影音、迅雷影音)

    FFmpeg开发(八)--Qt视频播放器之多线程的使用(参考了暴风影音.迅雷影音) 上篇文章介绍了: FFmpeg开发(七)--Qt视频播放器之播放列表类(参考了暴风影音.迅雷影音) 本播放器系列相关 ...

  2. FFmpeg开发(五)——Qt视频播放器之封装FFmpeg类(参考了暴风影音、迅雷影音)

    FFmpeg开发(五)--Qt视频播放器之封装FFmpeg类(参考了暴风影音.迅雷影音) 上一篇介绍了,使用Qt和FFmpeg写的播放器.页面大家可以点进去查看和下载. FFmpeg开发(四)--Qt ...

  3. FFmpeg开发(七)——Qt视频播放器之播放列表类(参考了暴风影音、迅雷影音)

    FFmpeg开发(七)--Qt视频播放器之播放列表类(参考了暴风影音.迅雷影音) 上一篇分享了音频类的封装. FFmpeg开发(六)--Qt视频播放器之封装音频类(参考了暴风影音.迅雷影音) 本播放器 ...

  4. FFmpeg开发(九)——Qt视频播放器之快进滑动条(参考了暴风影音、迅雷影音)

    FFmpeg开发(九)--Qt视频播放器之快进滑动条(参考了暴风影音.迅雷影音) 上一篇介绍了使用多线程 FFmpeg开发(八)--Qt视频播放器之多线程的使用(参考了暴风影音.迅雷影音) 本播放器系 ...

  5. FFmpeg开发(四)——Qt实现一个视频播放器(参考了暴风影音、迅雷影音)

    FFmpeg开发(四)--Qt实现一个视频播放器(参考了暴风影音.迅雷影音) 本系列文章目录: FFmpeg开发(一)一Qt Creator配置FFmpeg FFmpeg开发(二)--(FFmpeg基 ...

  6. 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像

    从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像 原文地址:http://blog.yundiantech.com/?log=blog&id=9 前面讲解了如何用FFM ...

  7. 从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用

    从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用 原文地址:http://blog.yundiantech.com/?log=blog&id=10 前面介绍了使用F ...

  8. FFmpeg和SDL实现视频播放器之 ⌈音频播放⌋

    实现播放视频文件中的声音,不显示图像. 使用FFmpeg库实现音频播放的流程图: 整体流程 音频播放的FFmpeg库函数的使用和视频播放的基本一样. // A1.1 打开视频文件:读取文件头,将文件格 ...

  9. FFMPEG Qt视频播放器之美化界面

    到这,播放器功能基本都已经实现了,现在就是把界面美化一下就好了: 美化界面直接使用Qt的QSS来做,QSS语法和CSS非常相似,还是相当好用的. 美化后的界面如下: 由于做界面是一件相对技术含量比较低 ...

最新文章

  1. VMware vCenter 6.0 安装及群集配置介绍
  2. 根据FileUpload控件名获取上传文件(大小)类型
  3. (转)pipe row的用法, Oracle split 函数写法.
  4. 汇编语言--mul 指令
  5. 深度丨110亿美金还不够,阿里使用这种AI手段创造更多广告收入
  6. Linux CentOS 修改服务器主机名hostname
  7. 转载 maven 详解 http://www.cnblogs.com/binyue/p/4729134.html
  8. Win11将沿用Win10升级模式 并会有LTSC版本
  9. python读取Excel工作簿、工作表
  10. 用xargs处理带空格文件名
  11. 第二阶段冲刺—第一天
  12. C - Watchmen
  13. idea运行maven出现o.s.boot.SpringApplication : Application run failed
  14. 使用 uBLAS 进行实对称正定矩阵的 Cholesky 分解
  15. 丹泽尔 x 陆奇:扫地僧牛逼的日常
  16. python背景怎么自定义铃声_【Python成长之路】如何用2行代码将抖音视频设置成我的手机铃声...
  17. 第12课 习题讲解
  18. 后端服务器常用软件:nginx
  19. 深入浅出编译原理-3-词法分析器
  20. 62. 如何通过增强(Enhancement) 的方式给 SAP ABAP 标准程序增添新功能

热门文章

  1. java字间距突然变大
  2. Codeforces Round #509 (Div. 2) D. Glider(前缀和)
  3. 使用windows自带的远程桌面连接
  4. bigemap 如何根据行政边界(省市区县乡镇)下载地图
  5. bat批量检测HTTP代理是否正常
  6. 场景烘培分享——详情unity手册
  7. 如果input标签中有runat=”server”,则在服务端,Request.Form接收不到
  8. 共识机制——POS与DPOS探究
  9. 2022年微信表情怎么保存到手机相册呢
  10. QT中文乱码解决方法2