当前位置:   article > 正文

Qt/C++音视频开发66-音频变速不变调/重采样/提高音量/变速变调/倍速播放/sonic库使用_qt 设置播放速率后变调怎么办

qt 设置播放速率后变调怎么办

一、前言

之前在做倍速这个功能的时候,发现快速播放会有滴滴滴的破音出现,正常1倍速没有这个问题,尽管这个破音间隔很短,要放大音量才能听到,但是总归是不完美的,后面发现,通过修改qaudiooutput的采样率,可以规避这个问题,破音不在出现了,但是音调变了,倍速越大变得越快,人声越发不清晰,变得尖锐,也就是通常说的变速变调了。当然这是正常现象,所有搞音视频播放开发者都会遇到这个现象,因为这就是默认的正常现象,但是我们希望听到的是变速不变调,速度可以快,但是要尽量保持人声能够识别。所以就需要有个算法能够将收到的可以直接播放的pcm数据运算,运算后的pcm数据是尽量保证了人声的数据,这样保持采样率不变的情况下,播放出来的声音效果非常好。

对比过很多播放器,有些著名的播放器早期也是没有考虑到这个变速变调的问题,是后来的版本才慢慢加上去的。还有些著名的组件比如qtav等,也一直是没有解决变速变调的问题,包括著名的推流大佬obs,调整到2倍速推流,声音也是变调了的。通过查阅资料得知,保证变速不变调,通常用两个库来实现,一个是soundtouch,一个是sonic,本人更喜欢用sonic,集成简单,就一个h和一个c文件,纯c语言编写的,整个源码就几千行代码。要学习也是非常容易的,通用任何平台和编译器。毕竟就是个数学运算库,只要是能支持C语言的场景就都支持。

Qt调用sonic库基本步骤:

  • 创建对象 sonicCreateStream,传入采样率和通道。
  • 设置倍速 sonicSetSpee
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/491794
推荐阅读
相关标签
  

闽ICP备14008679号