一、前言
之前用ffmpeg解码出来了音频,只是做了存储部分,比如存储成aac文件,播放的话早期用的是sdl来播放音频,自从Qt5以后提供了QAudioOutput来播放输入的音频数据,就更加方便了,可以直接将解码好的音频数据写入就能播放了,这些就少了个学习sdl的成本,而且和Qt就更加融合,不需要额外的第三方库,解码好的视频,其实就是一张张图片数据,可以直接用QPainter绘制或者QOpenGlWidget通过GPU显示,解码好的音频用QAudioOutput播放,这对于很多初学者来说,是个很好的消息,完美。
音频播放大致的流程如下:
- 初始化格式QAudioFormat,设置对应的属性。
- 初始化一个QAudioOutput音频播放对象。
- 将QAudioOutput启动后的播放设备交给QIODevice。
- 打开音频流后初始化SwrContext用来转换音频数据。
- 循环解码音频数据后调用swr_convert转换音频数据。
- 将转换好的音频数据直接write到QIODevice。
公众号:Qt实战,各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。
公众号:Qt入门和进阶,专门介绍Qt/C++相关知识点学习,帮助Qt开发者更好的深入学习Qt。多位Qt元婴期大神,一步步带你从入门到进阶,走上财务自由之路。
二、功能特点
- 多线程实时