一、前言

之前用ffmpeg解码出来了音频,只是做了存储部分,比如存储成aac文件,播放的话早期用的是sdl来播放音频,自从Qt5以后提供了QAudioOutput来播放输入的音频数据,就更加方便了,可以直接将解码好的音频数据写入就能播放了,这些就少了个学习sdl的成本,而且和Qt就更加融合,不需要额外的第三方库,解码好的视频,其实就是一张张图片数据,可以直接用QPainter绘制或者QOpenGlWidget通过GPU显示,解码好的音频用QAudioOutput播放,这对于很多初学者来说,是个很好的消息,完美。

音频播放大致的流程如下:

  1. 初始化格式QAudioFormat,设置对应的属性。
  2. 初始化一个QAudioOutput音频播放对象。
  3. 将QAudioOutput启动后的播放设备交给QIODevice。
  4. 打开音频流后初始化SwrContext用来转换音频数据。
  5. 循环解码音频数据后调用swr_convert转换音频数据。
  6. 将转换好的音频数据直接write到QIODevice。

二、功能特点

  1. 多线程实时播放视频流+本地视频+USB摄像头等。
  2. 支持windows+linux+mac,支持ffmpeg3和ffmpeg4,支持32位和64位。
  3. 多线程显示图像,不卡主界面。
  4. 自动重连网络摄像头。
  5. 可设置边框大小即偏移量和边框颜色。
  6. 可设置是否绘制OSD标签即标签文本或图片和标签位置。
  7. 可设置两种OSD位置和风格。
  8. 可设置是否保存到文件以及文件名。
  9. 可直接拖曳文件到f

Qt音视频开发7-ffmpeg音频播放相关推荐

  1. Qt音视频开发04-保存音频文件(pcm/wav/aac)

    一.前言 音频的保存相对来说比视频的要简单,具有通用性,不需要经过ffmpeg的编码,ffmpeg解码出来后一般会转换成pcm原始的数据用来播放,所以对数据直接写文件即可,但是这种格式是无法用播放器直 ...

  2. iOS 音视频开发:Audio Unit播放FFmpeg解码的音频

    本文档描述了iOS播放经FFmpeg解码的音频数据的编程步骤,具体基于Audio Toolbox框架的Audio Session和Audio Unit框架提供的接口实现.在iOS 7及以上平台Audi ...

  3. Qt音视频开发06-海康sdk内核linux客户端

    一.前言 海康sdk的示例在官方是提供了的,但是无论UI还是交互简直是宇宙无敌的垃圾,猜测应该是初学者编写的,估计练手用的,所以老早就想把这个linux支持集成到自己的示例中,既然已经支持了windo ...

  4. Qt音视频开发01-共享解码线程(耗时一年/性能凶残/至臻完美)

    一.前言 大概在8年前就开始用ffmpeg做视频解码的显示,第一个版本就100行代码左右,功能极其简单,就是开个线程解码视频流转成图片发给主界面绘制.时间过得真快,从当初的一胎到现在二胎都上学了三胎计 ...

  5. 【秒懂音视频开发】07_音频录制01_命令行

    命令简介 FFmpeg的bin目录中提供了3个命令(可执行程序),可以直接在命令行上使用. 3个命令 ffmpeg ffmpeg的主要作用:对音视频进行编解码. # 将MP3文件转成WAV文件 ffm ...

  6. Qt音视频开发27-Onvif设备搜索

    一.前言 最近业余时间主要研究音视频开发这块,前面的文章写了好多种视频监控内核,一旦将这些内核搞定以后,视频监控的相关功能水到渠成.做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大 ...

  7. Qt音视频开发26-ffmpeg播放器

    一.前言 用ffmpeg来实现自己的播放器,这是一直以来的一个目标,之前的难点卡在音视频同步以及如何播放声音这两点(尽管之前已经进行过不少的尝试和探索,但是问题还是挺多,比如音视频同步不完美,有些文件 ...

  8. Qt音视频开发22-音频播放QAudioOutput

    一.前言 以前一直以为只有Qt5以后才有QAudioOutput播放音频,其实从Qt4.6开始就有,在Qt6中变成了QAudioSink,功能一样.用QAudioOutput播放音频pcm数据极其方便 ...

  9. Qt音视频开发02-海康sdk解码(支持句柄/回调/GPU模式/支持win/linux)

    一.前言 为何还要选用使用海康sdk,之前不是ffmpeg已经牛皮吹上天了吗?这个问题问得好,那是因为无论ffmpeg也好还是vlc/mpv之类的,都是实现的播放相关,不同的监控硬件厂家对应设备还有很 ...

最新文章

  1. ffmpeg支持x264插件
  2. 汇编:模拟C语言实现break与continue
  3. 【Qt】Qt工程管理
  4. [项目总结]在ios中使用soundtouch库实现变声
  5. 正反案例介绍SOLID原则
  6. 【Python学习】 - skimage包
  7. 云计算的概念_近500亿资金汹涌出逃!云计算概念龙头抛压沉重,科技股资金出逃名单出炉...
  8. 重磅来袭 | 移动云城市峰会分论坛暨移动云TeaTalk青岛站 即将开启
  9. PowerShell与系统开局(下)
  10. 译:6.RabbitMQ Java Client 之 Remote procedure call (RPC,远程过程调用)
  11. python刚出来多少薪资-Python工资待遇的几个层级,你工作几年了?目前是哪个层级?...
  12. mpp新增一个字段_ormpp--一个很酷的Modern C++ ORM库
  13. python柱状图加百分比_【python】封装接口直接利用DataFrame绘制百分比柱状图
  14. 23种设计模式-观察者模式
  15. 1833. 雪糕的最大数量
  16. 股权和更高的薪资应该选那个呢?
  17. c# 刻度:毫米 英寸 像素转换
  18. Android用mediaPlayer.prepare()报错
  19. 1-十六烷基-3-三乙氧基丙基硅烷咪唑溴盐离子液体([HDTIm]Br)修饰磁性纳米颗粒(MNPs)|[HDTIm]Br-MNPs
  20. 一飞院飞机总体协同设计系统

热门文章

  1. Linux | 可重入函数 | volatile | SIGCHLD信号
  2. 【AI测试】也许这有你想知道的人工智能 (AI) 测试--开篇
  3. JDK1.8的安装方式
  4. 学C语言,C++是自学好还是去培训机构?
  5. 失业找不到工作,很焦虑怎么办?
  6. (function($){...})(jQuery)、$(function(){ })和$.fn
  7. 如何用VBA保护工作表
  8. Android 应用apk打包原理
  9. PostgreSQL全局替换字符串函数
  10. assert()使用