日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt double 相减不为0_Qt音视频开发25-ffmpeg音量设置

發布時間:2024/9/15 编程问答 147 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,取消靜音的時候自動設置音量為最后記住的音量值即可。

二、功能特點

  • 多線程實時播放視頻流+本地視頻+USB攝像頭等。
  • 支持windows+linux+mac,支持ffmpeg3和ffmpeg4,支持32位和64位。
  • 多線程顯示圖像,不卡主界面。
  • 自動重連網絡攝像頭。
  • 可設置邊框大小即偏移量和邊框顏色。
  • 可設置是否繪制OSD標簽即標簽文本或圖片和標簽位置。
  • 可設置兩種OSD位置和風格。
  • 可設置是否保存到文件以及文件名。
  • 可直接拖曳文件到ffmpegwidget控件播放。
  • 支持h265視頻流+rtmp等常見視頻流。
  • 可暫停播放和繼續播放。
  • 支持存儲單個視頻文件和定時存儲視頻文件。
  • 自定義頂部懸浮條,發送單擊信號通知,可設置是否啟用。
  • 可設置畫面拉伸填充或者等比例填充。
  • 可設置解碼是速度優先、質量優先、均衡處理。
  • 可對視頻進行截圖(原始圖片)和截屏。
  • 錄像文件存儲支持裸流和MP4文件。
  • 音視頻完美同步,采用外部時鐘同步策略。
  • 支持seek定位播放位置。
  • 支持qsv、dxva2、d3d11va等硬解碼。
  • 支持opengl繪制視頻數據,極低CPU占用。
  • 支持安卓和嵌入式linux,交叉編譯即可。
  • 三、效果圖

    四、相關站點

  • 國內站點:https://gitee.com/feiyangqingyun/QWidgetDemo
  • 國際站點:https://github.com/feiyangqingyun/QWidgetDemo
  • 個人主頁:https://blog.csdn.net/feiyangqingyun
  • 知乎主頁:https://www.zhihu.com/people/feiyangqingyun/
  • 體驗地址:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  • 五、核心代碼

    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音量设置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。