Qt c++.如何指定保存记录的路径?

doinxwow  于 2023-04-08  发布在  其他
关注(0)|答案(3)|浏览(215)

我有一个QAudioRecorder对象,音频录制成功,但录音保存在默认目录中,我如何指定我的位置来存储录音?使用QAudioRecorder::setOutputLocation()失败。

jq6vz3qz

jq6vz3qz1#

我遇到了完全相同的问题,它只是缺少file:///
像这样修改你的路径,它会工作:

recorder->setOutputLocation(QUrl("file:///C:/mypath/test123.mp3"));
nkhmeac6

nkhmeac62#

QAudioRecorder类继承了QMediaRecorder,这个类有一个属性,名为outputLocation,并带有Access函数:

QUrl    outputLocation() const
bool    setOutputLocation(const QUrl &location)

你可以做到这一点...这里更多信息:https://doc.qt.io/qt-5/qmediarecorder.html#outputLocation-prop

vq8itlhq

vq8itlhq3#

documentation提供了一些很好的例子来说明如何使用setOutPutLocation()

audioRecorder = new QAudioRecorder;

QAudioEncoderSettings audioSettings;
audioSettings.setQuality(QMultimedia::HighQuality);

audioRecorder->setEncodingSettings(audioSettings);

audioRecorder->setOutputLocation(QUrl::fromLocalFile("file.mp3"));
audioRecorder->record();

它也可以与绝对路径一起使用:

audioRecorder->setOutputLocation(QUrl("file:///C:/path/file.mp3"));

根据文档,setOutPutLocation()

***设置输出位置,如果操作成功则返回。***如果输出位置的文件已经存在,则应覆盖该文件。

位置可以是相对的,也可以是空的;在这种情况下,服务应该使用系统特定的位置和文件命名方案。
开始记录后,后端应使用actualLocationChanged()信号报告实际文件位置。
为了确保你的方法调用可以正常工作,你可以在调用它的时候查看返回值。或者你可以调用这个方法:https://doc.qt.io/qt-5/qmediarecordercontrol.html#outputLocation将:
返回当前使用的输出位置。
如果setOutPutLocation()成功,outputLocation()应该返回相同的值。

相关问题