首页| 论坛| 消息

标题:Qt/C++编写视频监控系统82-自定义音柱显示
作者:liudianwu
日期:2024-01-03 09:29
内容:

## 一、前言
通过音柱控件实时展示当前播放的声音产生的振幅的大小,得益于音频播放组件内置了音频振幅的计算,可以动态开启和关闭,开启后会对发送过来的要播放的声音数据,进行运算得到当前这个音频数据的振幅,类似于分贝,分贝越大,听到的声音越大,振幅越大。在如何摆放音柱控件这个问题上,考虑过多种方案,比如一开始做的是固定放在视频控件的右侧,也就是在一个垂直布局中先放一个视频控件,然后放左通道音柱,最后放一个右通道音柱,三个控件之间设置好间距。后面用户又提出来直接音柱控件悬浮在视频控件上方,这样可以节约位置,以便视频控件争取最大的地方展示,所以近期又专门重新搞了下,音柱可以放置在左侧、右侧、顶部、底部、两侧、悬浮等位置,然后还可以设置音柱的尺寸,如果是垂直摆放对应尺寸就是宽度,如果是上下摆放对应尺寸就是高度,还有个难点就是纯音频的通道,音量条需要摆放在中间位置,比如音量条左右两侧是一个弹簧,音量条尺寸取宽度的四分之一,这样看起来就非常美观了。
由于视频控件还有悬浮条,所以这个音柱的摆放位置,还需要留出足够的位置给悬浮条展示,然而呢悬浮条又有多种位置,比如也可以设置在底部,所以需要根据悬浮条的位置,再留出对应的间隙。在Qt的便利性,要设计这样一个带视频带悬浮带音柱,而且还支持非常灵活的各种参数设置,还是非常方便的,比如就新建个frmVideoWidgetVolume带音柱的视频窗体,悬浮条也是一个独立的widget,根据尺寸变化对应移来移去。音柱控件这边,通过表格布局来插入对应的控件。比如需要两侧显示音柱,则先插入左声道音柱,然后插入视频控件,最后插入右声道音柱控件。难点就在纯音频的音道控件,他需要根据尺寸占比自动拉伸,而且一个窗体需要根据打开的地址来区分当前是否是纯音频,所以需要在解码完成和结束的时候去做判断处理,打完收工。
## 二、效果图

## 三、体验地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 体验地址:[https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/ ..


#1 [shokokawaii 01-04 19:12]

回复 发表
主题 版块