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; } }