石家庄个人建站模板,平台网站如何做推广方案设计,网站后台发布图片upload failed,小说网站要怎么做对于音频我们在使用的过程中一般是录制音频、播放音频。针对这两个需求介绍Qt中音频的使用。
Qt中音频的录制
步骤#xff1a;
1、获取系统中的音频设备。
2、创建QAudioRecorder对象#xff0c;指定使用的音频设备#xff0c;通过QAudioRecorder的setAudioInput函数设置…对于音频我们在使用的过程中一般是录制音频、播放音频。针对这两个需求介绍Qt中音频的使用。
Qt中音频的录制
步骤
1、获取系统中的音频设备。
2、创建QAudioRecorder对象指定使用的音频设备通过QAudioRecorder的setAudioInput函数设置。
3、设置音频的保存位置通过QAudioRecorder对象的setOutputLocation函数设置。
4、设置保存的音频格式通过QAudioRecorder对象的setAudioSettings函数设置设置参数为QAudioEncoderSettings。
5、设置保存音频的容器格式通过QAudioRecorder对象的setContainerFormat。
6、以上参数设置完成之后就可以QAudioRecorder对象调用record开始录制了如果不设置相关才是会使用系统默认的参数。
7、AudioRecorder对象调用stop()结束录制。
8、AudioRecorder对象调用pause()暂停录制。
代码如下
QListQAudioDeviceInfo audioDevices QAudioDeviceInfo::availableDevices(QAudio::AudioInput);//获取音频的输入设备
foreach (QAudioDeviceInfo device, audioDevices) {ui-comboBox_sound-addItem(device.deviceName());
}
......
m_audioRecorder new QAudioRecorder(this);
QString datatime QDateTime::currentDateTime().toString(yyyy-MM-dd-hh-mm-ss);
m_audioName QString(%2/audio/%3).arg(savePath).arg(datatime);
m_audioRecorder-setOutputLocation(QUrl::fromLocalFile(m_audioName));
m_audioRecorder-setAudioInput(audioDeviceName);
QAudioEncoderSettings set;set.setCodec(audio/wav); // 这些是QAudioRecorder是设置见名思意
set.setQuality(QMultimedia::EncodingQuality::HighQuality);
set.setEncodingMode(QMultimedia::ConstantQualityEncoding);m_audioRecorder-setContainerFormat(audio/wav); // 设置容器格式
m_audioRecorder-setAudioSettings(set);
m_audioRecorder-record();//开始录制
......
m_audioRecorder-pause();//暂停录制
......
m_audioRecorder-stop();//结束录制以上可以完成最基本的音频录制但是如果想使用更高端的录制例如在录制的时候显示音频的想干信息。要想实现以上描述需要使用Qt提供的QAudioProbe类来监控音频数据。
实现步骤如下
1、创建QAudioProbe对象。
2、QAudioProbe对象通过调用setSource函数设置监控对象传入参数为AudioRecorder对象。这里QAudioProbe对象监控的就是AudioRecorder对象对象输入的音频。
3、实现QAudioProbe::audioBufferProbed信号槽函数这个信号是当在媒体服务中处理音频缓冲器时发出该。信号会传递一个QAudioBuffer 格式的音频数据。
4、实现槽函数接收QAudioBuffer 类型的数据之后通过对接收到数据的计算实现频谱或者其他的显示。
代码如下 m_audioRecordProbe new QAudioProbe(this);m_audioRecorder new QAudioRecorder(this);//显示m_audioRecordProbe-setSource(m_audioRecorder); // 指定声源connect(m_audioProbe, QAudioProbe::audioBufferProbed, this,[](const QAudioBuffer buffer){emit audioProcessBuff(buffer);});Qt中音频的播放
步骤
1、创建一个QMediaPlayer对象。
2、创建QMediaPlaylist对象。
3、通过QMediaPlaylist对象的setPlaybackMode函数创建列表的循环模式。
ConstantValueDescriptionQMediaPlaylist::CurrentItemOnce0当前项目只播放一次。QMediaPlaylist::CurrentItemInLoop1当前项目在循环中重复播放QMediaPlaylist::Sequential2播放从当前开始在每个连续项目中移动直到到达最后一个项目然后停止。当前正在播放上一个项目时下一个项目为空项目。QMediaPlaylist::Loop3播放在最后一个项目播放完毕后的第一个项目处重新开始。QMediaPlaylist::Random4按随机顺序播放项目
4、 QMediaPlayer对象通过函数setPlaylist设置播放列表参数为QMediaPlaylist对象。
5、向播放列表中添加需要播放的音频通过QMediaPlaylist对象addMedia函数添加音频列表。
6、在音频列表中选择需要播放的音频使用QMediaPlaylist对象的setCurrentIndex函数参数为音频标号。
7、QMediaPlayer对象调用play函数播放音频。
8、QMediaPlayer对象调用pause函数暂停播放音频。
9、QMediaPlayer对象调用stop函数停止播放音频。
代码如下
m_mediaPlayer new QMediaPlayer(this);
m_mediaPlaylist new QMediaPlaylist(this);
m_mediaPlaylist-setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
m_mediaPlayer-setPlaylist(m_mediaPlaylist);
......
m_mediaPlaylist-addMedia(QUrl::fromLocalFile(filePath));
......
m_mediaPlaylist-setCurrentIndex(index);
......
m_mediaPlayer-play();
......
m_mediaPlayer-pause();
......
m_mediaPlayer-stop();
QMediaPlayer除了播放、暂停、停止播放外还有其他设置例如设置声音大小快进、快退等。都可以通过QMediaPlayer对象的函数进行设置。也可以通过QAudioProbe对象对播放的音频进行监听实现播放音频声波的可视化。方法和录制一样。
通过QSound类播放音频暂不介绍