5#include <QStandardPaths>
7#include "ParameterRecord.h"
8#include "RabbitCommonDir.h"
10CParameterRecord::CParameterRecord(QObject *parent,
const QString &szPrefix)
12 , m_bEnableVideo(true)
13 , m_bEnableAudio(true)
14#if HAVE_QT6_MULTIMEDIA
15 , m_FileFormat(QMediaFormat::FileFormat::MPEG4)
16 , m_VideoCodec(QMediaFormat::VideoCodec::H264)
17 , m_AudioCodec(QMediaFormat::AudioCodec::AAC)
18 , m_Quality(QMediaRecorder::NormalQuality)
19 , m_EncodingMode(QMediaRecorder::ConstantQualityEncoding)
22 , m_AudioSampleRate(-1)
23 , m_EndAction(ENDACTION::OpenFile)
25 m_szVideoPath = QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
27 if(m_szVideoPath.isEmpty() || !d.exists(m_szVideoPath))
28 m_szVideoPath = RabbitCommon::CDir::Instance()->GetDirUserImage();
29 m_szVideoPath += QDir::separator() + QString(
"RabbitRemoteControl")
30 + QDir::separator() + QString(
"Record");
32 if(!d.exists(m_szVideoPath))
33 d.mkpath(m_szVideoPath);
35 m_szImagePath = QStandardPaths::writableLocation(
36 QStandardPaths::PicturesLocation);
37 if(m_szImagePath.isEmpty() || !d.exists(m_szImagePath))
38 m_szImagePath = RabbitCommon::CDir::Instance()->GetDirUserImage();
39 m_szImagePath += QDir::separator() + QString(
"RabbitRemoteControl")
40 + QDir::separator() + QString(
"ScreenShot");
41 if(!d.exists(m_szImagePath))
42 d.mkpath(m_szImagePath);
49 m_bEnableVideo = in.m_bEnableVideo;
50 m_bEnableAudio = in.m_bEnableAudio;
51 m_szVideoFile = in.m_szVideoFile;
52 m_szImageFile = in.m_szImageFile;
53 m_szVideoPath = in.m_szVideoPath;
54 m_szImagePath = in.m_szImagePath;
56#if HAVE_QT6_MULTIMEDIA
57 m_FileFormat = in.m_FileFormat;
58 m_VideoCodec = in.m_VideoCodec;
59 m_AudioCodec = in.m_AudioCodec;
60 m_Quality = in.m_Quality;
61 m_EncodingMode = in.m_EncodingMode;
64 m_VideoFrameRate = in.m_VideoFrameRate;
65 m_AudioSampleRate = in.m_AudioSampleRate;
67 m_EndAction = in.m_EndAction;
72bool CParameterRecord::GetEnableVideo()
const
74 return m_bEnableVideo;
77void CParameterRecord::SetEnableVideo(
bool newEnableVideo)
79 if (m_bEnableVideo == newEnableVideo)
81 m_bEnableVideo = newEnableVideo;
83 emit sigEnableVideoChanged();
86bool CParameterRecord::GetEnableAudio()
const
88 return m_bEnableAudio;
91void CParameterRecord::SetEnableAudio(
bool newEnableAudio)
93 if (m_bEnableAudio == newEnableAudio)
95 m_bEnableAudio = newEnableAudio;
97 emit sigEnableAudioChanged();
100CParameterRecord::ENDACTION CParameterRecord::GetEndAction()
const
105void CParameterRecord::SetEndAction(ENDACTION newEndAction)
107 if (m_EndAction == newEndAction)
109 m_EndAction = newEndAction;
111 emit sigEndActionChanged();
114QString CParameterRecord::GetImagePath()
const
116 return m_szImagePath;
119void CParameterRecord::SetImagePath(
const QString &newImagePath)
121 if (m_szImagePath == newImagePath)
123 m_szImagePath = newImagePath;
125 QDir d(m_szImagePath);
127 d.mkpath(m_szImagePath);
128 emit ImagePathChanged();
131int CParameterRecord::OnLoad(QSettings &set)
133 set.beginGroup(
"Record");
135 SetEnableVideo(set.value(
"EnableVideo", GetEnableVideo()).toBool());
136 SetEnableAudio(set.value(
"EnableAudio", GetEnableAudio()).toBool());
137 SetVideoPath(set.value(
"Path/Video", GetVideoPath()).toString());
138 SetImagePath(set.value(
"Path/Image", GetImagePath()).toString());
139#if HAVE_QT6_MULTIMEDIA
140 SetFileFormat((QMediaFormat::FileFormat)
141 set.value(
"FileFormat", (
int)GetFileFormat()).toInt());
142 SetVideoCodec((QMediaFormat::VideoCodec)
143 set.value(
"Video/Codec", (
int)GetVideoCodec()).toInt());
144 SetAudioCodec((QMediaFormat::AudioCodec)
145 set.value(
"Audio/Codec", (
int)GetAudioCodec()).toInt());
146 SetQuality((QMediaRecorder::Quality)
147 set.value(
"Quality", GetQuality()).toInt());
148 SetEncodingMode((QMediaRecorder::EncodingMode)
149 set.value(
"EncodingMode", GetEncodingMode()).toInt());
151 SetAudioSampleRate(set.value(
"Audio/SampleRate", GetAudioSampleRate()).toInt());
152 SetVideoFrameRate(set.value(
"Video/FrameRate", GetVideoFrameRate()).toInt());
153 SetEndAction((ENDACTION)set.value(
"EndAction", GetEndAction()).toInt());
158int CParameterRecord::OnSave(QSettings &set)
160 set.beginGroup(
"Record");
162 set.setValue(
"EnableVideo", GetEnableVideo());
163 set.setValue(
"EnableAudio", GetEnableAudio());
164 set.setValue(
"Path/Video", GetVideoPath());
165 set.setValue(
"Path/Image", GetImagePath());
166#if HAVE_QT6_MULTIMEDIA
167 set.setValue(
"FileFormat", (
int)GetFileFormat());
168 set.setValue(
"Video/Codec", (
int)GetVideoCodec());
169 set.setValue(
"Audio/Codec", (
int)GetAudioCodec());
170 set.setValue(
"Quality", (
int)GetQuality());
171 set.setValue(
"EncodingMode", GetEncodingMode());
173 set.setValue(
"Audio/SampleRate", GetAudioSampleRate());
174 set.setValue(
"Video/FrameRate", GetVideoFrameRate());
175 set.setValue(
"EndAction", (
int)GetEndAction());
183 m_szVideoFile = GetVideoPath() + QDir::separator()
184 + QDateTime::currentDateTime().toLocalTime()
185 .toString(
"yyyy_MM_dd_hh_mm_ss_zzz");
187 return m_szVideoFile;
190int CParameterRecord::SetVideoFile(
const QString &szFile)
192 if(m_szVideoFile == szFile)
195 m_szVideoFile = szFile;
199QString CParameterRecord::GetImageFile(
bool bAuto)
201 QString szPath = GetImagePath();
203 m_szImageFile = szPath
205 + QDateTime::currentDateTime().toLocalTime()
206 .toString(
"yyyy_MM_dd_hh_mm_ss_zzz") +
".png";
208 return m_szImageFile;
211void CParameterRecord::SetImageFile(
const QString &newImageFile)
213 if (m_szImageFile == newImageFile)
215 m_szImageFile = newImageFile;
217 emit sigImageFileChanged();
220const QString CParameterRecord::GetVideoPath()
const
222 return m_szVideoPath;
225int CParameterRecord::SetVideoPath(
const QString &szPath)
227 if(m_szVideoPath == szPath)
229 m_szVideoPath = szPath;
231 QDir d(m_szVideoPath);
233 d.mkpath(m_szVideoPath);
237#if HAVE_QT6_MULTIMEDIA
238const QMediaFormat::FileFormat CParameterRecord::GetFileFormat()
const
243int CParameterRecord::SetFileFormat(
const QMediaFormat::FileFormat &f)
245 if(m_FileFormat == f)
252const QMediaFormat::VideoCodec CParameterRecord::GetVideoCodec()
const
257int CParameterRecord::SetVideoCodec(QMediaFormat::VideoCodec v)
259 if(m_VideoCodec == v)
266const QMediaFormat::AudioCodec CParameterRecord::GetAudioCodec()
const
271int CParameterRecord::SetAudioCodec(QMediaFormat::AudioCodec a)
273 if(m_AudioCodec == a)
280QMediaRecorder::Quality CParameterRecord::GetQuality()
const
285void CParameterRecord::SetQuality(
const QMediaRecorder::Quality &newQuality)
287 if (m_Quality == newQuality)
289 m_Quality = newQuality;
291 emit sigQualityChanged();
294QMediaRecorder::EncodingMode CParameterRecord::GetEncodingMode()
const
296 return m_EncodingMode;
299void CParameterRecord::SetEncodingMode(
const QMediaRecorder::EncodingMode &newEncodingMode)
301 if (m_EncodingMode == newEncodingMode)
303 m_EncodingMode = newEncodingMode;
305 emit sigEncodingModeChanged();
309qreal CParameterRecord::GetVideoFrameRate()
const
311 return m_VideoFrameRate;
314void CParameterRecord::SetVideoFrameRate(qreal newVideoFrameRate)
316 if(m_VideoFrameRate == newVideoFrameRate)
318 m_VideoFrameRate = newVideoFrameRate;
323int CParameterRecord::GetAudioSampleRate()
const
325 return m_AudioSampleRate;
328void CParameterRecord::SetAudioSampleRate(
int newAudioSampleRate)
330 if(m_AudioSampleRate == newAudioSampleRate)
332 m_AudioSampleRate = newAudioSampleRate;
339#if HAVE_QT6_MULTIMEDIA
340 para.SetVideoFrameRate(recorder.videoFrameRate());
341 para.SetAudioSampleRate(recorder.audioSampleRate());
343 format = recorder.mediaFormat();
344 para.SetAudioCodec(format.audioCodec());
345 para.SetVideoCodec(format.videoCodec());
346 para.SetFileFormat(format.fileFormat());
347 para.SetQuality(recorder.quality());
348 para.SetEncodingMode(recorder.encodingMode());
350 para.SetVideoFile(recorder.outputLocation().toString());
356#if HAVE_QT6_MULTIMEDIA
357 recorder.setVideoFrameRate(para.GetVideoFrameRate());
358 recorder.setAudioSampleRate(para.GetAudioSampleRate());
360 format.setAudioCodec(para.GetAudioCodec());
361 format.setVideoCodec(para.GetVideoCodec());
362 format.setFileFormat(para.GetFileFormat());
363 recorder.setMediaFormat(format);
364 recorder.setQuality(para.GetQuality());
365 recorder.setEncodingMode(para.GetEncodingMode());
369 recorder.setOutputLocation(QUrl::fromLocalFile(para.
GetVideoFile(
true)));
const QString GetVideoFile(bool bAuto=false)
int SetModified(bool bModified=true)
When setting parameters, if there is a modification, it is called.