bool MainWindow::outputDiskSpace(const QString& strDestination,const QModelIndexList& lstConvertItems)
{
FfVideoModel* pFfVideoModel = ui->ffVideoForm->ffVideoModel();
FfVideoModelItem* pItem = NULL;
// 选出下一个可用项
int v=0,a=0,l_time=0;
unsigned __int64 total=0;
for (int i=0;i<lstConvertItems.size();i++)
{
QModelIndex index = lstConvertItems.at(i);
pItem = pFfVideoModel->itemByModelIndex(index);
int m_nOutputIndex=0;
// 通过output决定
COOutput* pOOutput = pItem->output(m_nOutputIndex, true);
CIInput* pIInputs = NULL;
int nInputCount =pItem->inputList(NULL, 0);
pIInputs = new CIInput[nInputCount];
pItem->inputList(pIInputs, nInputCount);
if (!g_pSettings->isRegistered())
{
// 非注册版本转换限制
for (int i = 0; i < nInputCount; i++)
{
double dConvertLength = pIInputs[i].trimLength;
if (dConvertLength < 0.5)
dConvertLength = pIInputs[i].mi.duration;
if (dConvertLength > 300.0)
pIInputs[i].trimLength = 300.0;
else
pIInputs[i].trimLength = dConvertLength / 2;
}
}
int nConvertLength = 0;
for (int i = 0; i < nInputCount; i++)
{
nConvertLength += pIInputs[i].trimLength;
}
l_time=nConvertLength; // video or audio 播放时间长度
a=pOOutput->profile.audioBitrate; // audio bitrate
v=pOOutput->profile.videoBitrate; // video bitrate
total+=(v+a)/8*l_time;
}
unsigned __int64 i1,i2,i3;
char chBuf[100];
GetDiskFreeSpaceEx( _TEXT("c: "),(PULARGE_INTEGER)&i1,(PULARGE_INTEGER)&i2,(PULARGE_INTEGER)&i3);
i2 = i2 >> 20; //磁盘空间剩余容量
//转换后的大小 以MB为单位
total = total >> 20;
QDir dirDestination(strDestination);
if(i2-total<2)
{
if (AkMessageBox::question(this, g_pProductInfo->productName(), tr("/"%1/" disk space may be insufficient. Are you sure to convert?").arg(dirDestination.canonicalPath ().left(3)), QDialogButtonBox::Ok | QDialogButtonBox::Cancel) != QDialogButtonBox::Ok)
return false;
else
return true;
}
else
{
return true;
}
}
判断磁盘空间
最新推荐文章于 2024-06-28 11:11:26 发布