qt double 相减不为0-ag凯发k8国际
ag凯发k8国际
收集整理的这篇文章主要介绍了
qt double 相减不为0_qt音视频开发25-ffmpeg音量设置
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
一、前言
音视频的播放、关闭、暂停、继续这几个基本功能,绝大部分人都是信手拈来的搞定,关于音量调节还是稍微饶了下弯弯,最开始打算采用各个系统的api来处理,坐下来发现不大好,系统的支持不完美,比如有些api限定了win7,而xp确没有,而且这玩意控制的是全局的音量,不好,大部分时候需要控制的是当前播放的媒体的音量,估计vlc和mpv这类播放器在处理声音的时候也有过如此的场景分析,后面还测试过用ffmpeg的filter滤镜代码控制音频数据的分贝值,比较繁琐,代码量也大,不方便初学者学习,最后灵机一动去找qaudiooutput的函数看下有没有volume的函数,果真有卧槽,原来自带了,对qt的爱慕之情又猛增了几十分,这里要注意的是qaudiooutput的音量值参数是0-1的范围double类型,而不是像vlc等播放器是0-100的值,所以需要自行转换。 如果搞定了音量的控制,那静音的设置当然分分钟啦,无非就是记住之前的音量,然后将音量设置0,取消静音的时候自动设置音量为最后记住的音量值即可。
二、功能特点
三、效果图
四、相关站点
五、核心代码
bool ffmpegthread::getmute() {return (getvolume() == 0); }int volume = 0; void ffmpegthread::setmute(bool mute) {//先记住之前的音量以便重新设置if (mute) {volume = getvolume();setvolume(0);} else {setvolume(volume);} }int ffmpegthread::getvolume() {if (this->isrunning()) { #if (qt_version > qt_version_check(5,0,0))return audiooutput->volume() * 100; #endif} else {return 0;} }void ffmpegthread::setvolume(int volume) {if (this->isrunning()) { #if (qt_version > qt_version_check(5,0,0))//查阅手册说范围值是 0.0 - 1.0audiooutput->setvolume((float)volume / 100.0); #endif} }总结
以上是ag凯发k8国际为你收集整理的qt double 相减不为0_qt音视频开发25-ffmpeg音量设置的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: