/** * @param BatchJob $parentJob * @param int $postConvertAssetType * @param string $srcFileSyncLocalPath * @param int $flavorAssetId * @param int $flavorParamsOutputId * @param bool $createThumb * @param int $thumbOffset * @param string $customData * @return BatchJob */ public static function addPostConvertJob(BatchJob $parentJob = null, $postConvertAssetType, $srcFileSyncLocalPath, $flavorAssetId, $flavorParamsOutputId, $createThumb = false, $thumbOffset = 3) { $postConvertData = new kPostConvertJobData(); $postConvertData->setPostConvertAssetType($postConvertAssetType); $postConvertData->setSrcFileSyncLocalPath($srcFileSyncLocalPath); $postConvertData->setFlavorParamsOutputId($flavorParamsOutputId); $postConvertData->setFlavorAssetId($flavorAssetId); $postConvertData->setThumbOffset($thumbOffset); $postConvertData->setCreateThumb($createThumb); if ($parentJob) { $parentData = $parentJob->getData(); if ($parentData instanceof kConvartableJobData) { $postConvertData->setCurrentOperationSet($parentData->getCurrentOperationSet()); $postConvertData->setCurrentOperationIndex($parentData->getCurrentOperationIndex()); } } $flavorAsset = assetPeer::retrieveById($flavorAssetId); $flavorParamsOutput = null; if ($createThumb) { $flavorParamsOutput = assetParamsOutputPeer::retrieveByPK($flavorParamsOutputId); if (!$flavorParamsOutput) { if ($flavorAsset) { $postConvertData->setThumbHeight($flavorAsset->getHeight()); $postConvertData->setThumbBitrate($flavorAsset->getBitrate()); } else { $postConvertData->setCreateThumb(false); } } elseif (!$flavorParamsOutput->getVideoBitrate()) { $postConvertData->setCreateThumb(false); } elseif ($flavorParamsOutput->getSourceRemoteStorageProfileId() != StorageProfile::STORAGE_KALTURA_DC) { $postConvertData->setCreateThumb(false); } elseif ($flavorAsset) { $entry = $flavorAsset->getentry(); if ($entry) { $thisFlavorHeight = $flavorParamsOutput->getHeight(); $thisFlavorBitrate = $flavorParamsOutput->getVideoBitrate(); $createThumb = false; if ($entry->getThumbBitrate() < $thisFlavorBitrate) { $createThumb = true; } elseif ($entry->getThumbBitrate() == $thisFlavorBitrate && $entry->getThumbHeight() < $thisFlavorHeight) { $createThumb = true; } if ($createThumb) { $postConvertData->setCreateThumb(true); $postConvertData->setThumbHeight($thisFlavorHeight); $postConvertData->setThumbBitrate($thisFlavorBitrate); } } } } $batchJob = null; $mediaParserType = $flavorParamsOutput ? $flavorParamsOutput->getMediaParserType() : mediaParserType::MEDIAINFO; if ($parentJob) { //Job will be created with parent job as his root job $useSameRoot = true; if ($parentJob->getJobType() == BatchJobType::CONVERT_PROFILE) { $useSameRoot = false; } $batchJob = $parentJob->createChild(BatchJobType::POSTCONVERT, $mediaParserType, $useSameRoot); } else { $batchJob = new BatchJob(); $batchJob->setEntryId($flavorAsset->getEntryId()); $batchJob->setPartnerId($flavorAsset->getPartnerId()); } $batchJob->setObjectId($flavorAsset->getId()); $batchJob->setObjectType(BatchJobObjectType::ASSET); KalturaLog::log("Post Convert created with file: " . $postConvertData->getSrcFileSyncLocalPath()); return kJobsManager::addJob($batchJob, $postConvertData, BatchJobType::POSTCONVERT, $mediaParserType); }
/** * @param BatchJob $parentJob * @param int $jobSubType * @param string $srcFileSyncLocalPath * @param int $flavorAssetId * @param int $flavorParamsOutputId * @param bool $createThumb * @param int $thumbOffset * @return BatchJob */ public static function addPostConvertJob(BatchJob $parentJob, $jobSubType, $srcFileSyncLocalPath, $flavorAssetId, $flavorParamsOutputId, $createThumb = false, $thumbOffset = 3) { $postConvertData = new kPostConvertJobData(); $postConvertData->setSrcFileSyncLocalPath($srcFileSyncLocalPath); $postConvertData->setFlavorParamsOutputId($flavorParamsOutputId); $postConvertData->setFlavorAssetId($flavorAssetId); $postConvertData->setThumbOffset($thumbOffset); $postConvertData->setCreateThumb($createThumb); $parentData = $parentJob->getData(); if ($parentData instanceof kConvartableJobData) { $postConvertData->setCurrentOperationSet($parentData->getCurrentOperationSet()); $postConvertData->setCurrentOperationIndex($parentData->getCurrentOperationIndex()); } if ($createThumb) { $flavorParamsOutput = flavorParamsOutputPeer::retrieveByPK($flavorParamsOutputId); if (!$flavorParamsOutput) { $flavorAsset = flavorAssetPeer::retrieveById($flavorAssetId); if ($flavorAsset) { $postConvertData->setThumbHeight($flavorAsset->getHeight()); $postConvertData->setThumbBitrate($flavorAsset->getBitrate()); } else { $postConvertData->setCreateThumb(false); } } elseif (!$flavorParamsOutput->getVideoBitrate()) { $postConvertData->setCreateThumb(false); } else { $entry = $parentJob->getEntry(); $rootBatchJob = $parentJob->getRootJob(); if ($rootBatchJob && $rootBatchJob->getJobType() == BatchJobType::CONVERT_PROFILE) { $thisFlavorHeight = $flavorParamsOutput->getHeight(); $thisFlavorBitrate = $flavorParamsOutput->getVideoBitrate(); $rootBatchJobData = $rootBatchJob->getData(); $createThumb = false; if ($rootBatchJobData->getThumbBitrate() < $thisFlavorBitrate) { $createThumb = true; } elseif ($rootBatchJobData->getThumbBitrate() == $thisFlavorBitrate && $rootBatchJobData->getThumbHeight() < $thisFlavorHeight) { $createThumb = true; } if ($createThumb) { $postConvertData->setCreateThumb(true); $postConvertData->setThumbHeight($thisFlavorHeight); $postConvertData->setThumbBitrate($thisFlavorBitrate); } } elseif (!$entry->getThumbnailVersion()) { $thisFlavorHeight = $flavorParamsOutput->getHeight(); $thisFlavorBitrate = $flavorParamsOutput->getVideoBitrate(); $postConvertData->setCreateThumb(true); $postConvertData->setThumbHeight($thisFlavorHeight); $postConvertData->setThumbBitrate($thisFlavorBitrate); } } } KalturaLog::log("Post Convert created with file: " . $postConvertData->getSrcFileSyncLocalPath()); return kJobsManager::addJob($parentJob->createChild(), $postConvertData, BatchJobType::POSTCONVERT, $jobSubType); }