qt double 相减不为0_Qt音视频开发25-ffmpeg音量设置
生活随笔
收集整理的這篇文章主要介紹了
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} }總結
以上是生活随笔為你收集整理的qt double 相减不为0_Qt音视频开发25-ffmpeg音量设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlmap自动扫描注入点_SQLmap
- 下一篇: lstm中look_back的大小选择_