/**
  * validateThumbAndMediaInfo validate and manipulate a thumbnail params according to the given media info
  * 
  * @param thumbParams $thumbParams
  * @param mediaInfo $mediaInfo
  * @param string $errDescription
  * @return thumbParamsOutput or null for fail
  */
 protected static function validateThumbAndMediaInfo(thumbParams $thumbParams, mediaInfo $mediaInfo = null, &$errDescription)
 {
     $thumbParamsOutput = new thumbParamsOutput();
     $thumbParamsOutput->setFlavorParamsId($thumbParams->getId());
     $thumbParamsOutput->setFlavorParamsVersion($thumbParams->getVersion());
     $thumbParamsOutput->setName($thumbParams->getName());
     $thumbParamsOutput->setTags($thumbParams->getTags());
     $thumbParamsOutput->setDescription($thumbParams->getDescription());
     $thumbParamsOutput->setReadyBehavior($thumbParams->getReadyBehavior());
     $thumbParamsOutput->setFormat($thumbParams->getFormat());
     $thumbParamsOutput->setWidth($thumbParams->getWidth());
     $thumbParamsOutput->setHeight($thumbParams->getHeight());
     $thumbParamsOutput->setConversionEngines($thumbParams->getConversionEngines());
     $thumbParamsOutput->setConversionEnginesExtraParams($thumbParams->getConversionEnginesExtraParams());
     $thumbParamsOutput->setOperators($thumbParams->getOperators());
     $thumbParamsOutput->setEngineVersion($thumbParams->getEngineVersion());
     $thumbParamsOutput->setFileExt('jpg');
     $thumbParamsOutput->setCropType($thumbParams->getCropType());
     $thumbParamsOutput->setQuality($thumbParams->getQuality());
     $thumbParamsOutput->setCropX($thumbParams->getCropX());
     $thumbParamsOutput->setCropY($thumbParams->getCropY());
     $thumbParamsOutput->setCropWidth($thumbParams->getCropWidth());
     $thumbParamsOutput->setCropHeight($thumbParams->getCropHeight());
     $thumbParamsOutput->setCropProvider($thumbParams->getCropProvider());
     $thumbParamsOutput->setCropProviderData($thumbParams->getCropProviderData());
     $thumbParamsOutput->setVideoOffset($thumbParams->getVideoOffset());
     $thumbParamsOutput->setWidth($thumbParams->getWidth());
     $thumbParamsOutput->setHeight($thumbParams->getHeight());
     $thumbParamsOutput->setScaleWidth($thumbParams->getScaleWidth());
     $thumbParamsOutput->setScaleHeight($thumbParams->getScaleHeight());
     $thumbParamsOutput->setBackgroundColor($thumbParams->getBackgroundColor());
     if ($mediaInfo) {
         if ($thumbParamsOutput->getVideoOffset() && $mediaInfo->getVideoDuration()) {
             $videoDurationSec = floor($mediaInfo->getVideoDuration() / 1000);
             if ($thumbParamsOutput->getVideoOffset() > $videoDurationSec) {
                 $thumbParamsOutput->setVideoOffset($videoDurationSec);
             }
         }
     }
     return $thumbParamsOutput;
 }
Example #2
0
 /**
  * @param BatchJob $parentJob
  * @param int $partnerId
  * @param string $entryId
  * @param string $thumbAssetId
  * @param FileSyncKey $srcSyncKey
  * @param string $srcAssetId
  * @param int $srcAssetType enum of assetType
  * @param thumbParamsOutput $thumbParams
  * @return BatchJob
  */
 public static function addCapturaThumbJob(BatchJob $parentJob = null, $partnerId, $entryId, $thumbAssetId, FileSyncKey $srcSyncKey, $srcAssetId, $srcAssetType, thumbParamsOutput $thumbParams = null)
 {
     $thumbAsset = assetPeer::retrieveById($thumbAssetId);
     if (!$thumbAsset) {
         KalturaLog::err("No thumbnail asset found for id [{$thumbAssetId}]");
         return null;
     }
     $partner = PartnerPeer::retrieveByPK($thumbAsset->getPartnerId());
     list($fileSync, $local) = kFileSyncUtils::getReadyFileSyncForKey($srcSyncKey, true, false);
     if (!$fileSync) {
         $thumbAsset->setStatus(asset::ASSET_STATUS_ERROR);
         $thumbAsset->setDescription("Source file sync not found: {$srcSyncKey}");
         $thumbAsset->save();
         KalturaLog::err("Source file sync not found: {$srcSyncKey}");
         return null;
     }
     if (!$local) {
         if ($fileSync->getFileType() == FileSync::FILE_SYNC_FILE_TYPE_URL && $partner && $partner->getImportRemoteSourceForConvert()) {
             $url = $fileSync->getExternalUrl($entryId);
             $originalAsset = kFileSyncUtils::retrieveObjectForSyncKey($srcSyncKey);
             if ($originalAsset instanceof flavorAsset) {
                 KalturaLog::debug("Creates import job for remote file sync [{$url}]");
                 if ($thumbParams) {
                     $thumbParams->setSourceParamsId($originalAsset->getFlavorParamsId());
                     $thumbParams->save();
                 }
                 $thumbAsset->setStatus(asset::ASSET_STATUS_WAIT_FOR_CONVERT);
                 $thumbAsset->setDescription("Source file sync is importing: {$srcSyncKey}");
                 $thumbAsset->save();
                 return kJobsManager::addImportJob($parentJob, $thumbAsset->getEntryId(), $partner->getId(), $url, $originalAsset, null, null, true);
             }
             KalturaLog::debug("Downloading remote file sync [{$url}]");
             $downloadPath = myContentStorage::getFSUploadsPath() . '/' . $thumbAsset->getId() . '.jpg';
             if (KCurlWrapper::getDataFromFile($url, $downloadPath)) {
                 kFileSyncUtils::moveFromFile($downloadPath, $srcSyncKey);
                 list($fileSync, $local) = kFileSyncUtils::getReadyFileSyncForKey($srcSyncKey, false, false);
                 if (!$fileSync) {
                     throw new kCoreException("Source file not found for thumbnail capture [{$thumbAssetId}]", kCoreException::SOURCE_FILE_NOT_FOUND);
                 }
             }
         } else {
             throw new kCoreException("Source file not found for thumbnail capture [{$thumbAssetId}]", kCoreException::SOURCE_FILE_NOT_FOUND);
         }
     }
     $localPath = $fileSync->getFullPath();
     $remoteUrl = $fileSync->getExternalUrl($entryId);
     // creates convert data
     $data = new kCaptureThumbJobData();
     $data->setThumbAssetId($thumbAssetId);
     $data->setSrcAssetId($srcAssetId);
     $data->setSrcAssetType($srcAssetType);
     $data->setSrcFileSyncLocalPath($localPath);
     $data->setSrcFileSyncRemoteUrl($remoteUrl);
     $data->setThumbParamsOutputId($thumbParams->getId());
     $batchJob = null;
     if ($parentJob) {
         $batchJob = $parentJob->createChild(BatchJobType::CAPTURE_THUMB);
     } else {
         $batchJob = new BatchJob();
         $batchJob->setEntryId($entryId);
         $batchJob->setPartnerId($partnerId);
     }
     $batchJob->setObjectId($thumbAssetId);
     $batchJob->setObjectType(BatchJobObjectType::ASSET);
     return kJobsManager::addJob($batchJob, $data, BatchJobType::CAPTURE_THUMB);
 }
 /**
  * validateThumbAndMediaInfo validate and manipulate a thumbnail params according to the given media info
  *
  * @param thumbParams $thumbParams
  * @param mediaInfo $mediaInfo
  * @param string $errDescription
  * @return thumbParamsOutput or null for fail
  */
 protected static function validateThumbAndMediaInfo(thumbParams $thumbParams, mediaInfo $mediaInfo = null, &$errDescription, $srcAsset = null)
 {
     $thumbParamsOutput = new thumbParamsOutput();
     $thumbParamsOutput->setFlavorParamsId($thumbParams->getId());
     $thumbParamsOutput->setFlavorParamsVersion($thumbParams->getVersion());
     $thumbParamsOutput->setName($thumbParams->getName());
     $thumbParamsOutput->setTags($thumbParams->getTags());
     $thumbParamsOutput->setDescription($thumbParams->getDescription());
     $thumbParamsOutput->setReadyBehavior($thumbParams->getReadyBehavior());
     $thumbParamsOutput->setFormat($thumbParams->getFormat());
     $thumbParamsOutput->setWidth($thumbParams->getWidth());
     $thumbParamsOutput->setHeight($thumbParams->getHeight());
     $thumbParamsOutput->setConversionEngines($thumbParams->getConversionEngines());
     $thumbParamsOutput->setConversionEnginesExtraParams($thumbParams->getConversionEnginesExtraParams());
     $thumbParamsOutput->setOperators($thumbParams->getOperators());
     $thumbParamsOutput->setEngineVersion($thumbParams->getEngineVersion());
     $extensionTypes = kConf::hasParam('image_file_ext') ? kConf::get('image_file_ext') : array();
     $ext = null;
     if ($srcAsset) {
         $ext = $srcAsset->getFileExt();
     }
     if (!is_null($ext) && in_array($ext, $extensionTypes)) {
         $thumbParamsOutput->setFileExt($ext);
     } else {
         $thumbParamsOutput->setFileExt('jpg');
     }
     $thumbParamsOutput->setRotate($mediaInfo ? $mediaInfo->getVideoRotation() : null);
     $thumbParamsOutput->setCropType($thumbParams->getCropType());
     $thumbParamsOutput->setQuality($thumbParams->getQuality());
     $thumbParamsOutput->setCropX($thumbParams->getCropX());
     $thumbParamsOutput->setCropY($thumbParams->getCropY());
     $thumbParamsOutput->setCropWidth($thumbParams->getCropWidth());
     $thumbParamsOutput->setCropHeight($thumbParams->getCropHeight());
     $thumbParamsOutput->setCropProvider($thumbParams->getCropProvider());
     $thumbParamsOutput->setCropProviderData($thumbParams->getCropProviderData());
     $thumbParamsOutput->setVideoOffset($thumbParams->getVideoOffset());
     $thumbParamsOutput->setWidth($thumbParams->getWidth());
     $thumbParamsOutput->setHeight($thumbParams->getHeight());
     $thumbParamsOutput->setScaleWidth($thumbParams->getScaleWidth());
     $thumbParamsOutput->setScaleHeight($thumbParams->getScaleHeight());
     $thumbParamsOutput->setBackgroundColor($thumbParams->getBackgroundColor());
     if ($mediaInfo && $mediaInfo->getVideoDuration()) {
         $videoDurationSec = floor($mediaInfo->getVideoDuration() / 1000);
         if ($thumbParamsOutput->getVideoOffset()) {
             if ($thumbParamsOutput->getVideoOffset() > $videoDurationSec) {
                 $thumbParamsOutput->setVideoOffset($videoDurationSec);
             }
         } elseif (!is_null($thumbParams->getVideoOffsetInPercentage())) {
             $percentage = $thumbParams->getVideoOffsetInPercentage() / 100;
             $thumbParamsOutput->setVideoOffset(floor($videoDurationSec * $percentage));
         }
     }
     return $thumbParamsOutput;
 }
Example #4
0
 /**
  * addFlavorConvertJob adds a single flavor conversion 
  * 
  * @param FileSyncKey $srcSyncKey
  * @param flavorParamsOutput $flavor
  * @param int $flavorAssetId
  * @param int $mediaInfoId
  * @param BatchJob $parentJob
  * @param int $lastEngineType  
  * @param BatchJob $dbConvertFlavorJob
  * @return BatchJob 
  */
 public static function addCapturaThumbJob(BatchJob $parentJob = null, $partnerId, $entryId, $thumbAssetId, FileSyncKey $srcSyncKey, $srcAssetType, thumbParamsOutput $thumbParams = null)
 {
     list($fileSync, $local) = kFileSyncUtils::getReadyFileSyncForKey($srcSyncKey, true, false);
     $localPath = null;
     $remoteUrl = null;
     if ($fileSync) {
         if ($fileSync->getFileType() != FileSync::FILE_SYNC_FILE_TYPE_URL) {
             $localPath = $fileSync->getFullPath();
         }
         $remoteUrl = $fileSync->getExternalUrl();
     }
     // creates convert data
     $data = new kCaptureThumbJobData();
     $data->setThumbAssetId($thumbAssetId);
     $data->setSrcAssetType($srcAssetType);
     $data->setSrcFileSyncLocalPath($localPath);
     $data->setSrcFileSyncRemoteUrl($remoteUrl);
     $data->setThumbParamsOutputId($thumbParams->getId());
     $batchJob = null;
     if ($parentJob) {
         $batchJob = $parentJob->createChild();
     } else {
         $batchJob = new BatchJob();
         $batchJob->setEntryId($entryId);
         $batchJob->setPartnerId($partnerId);
     }
     return kJobsManager::addJob($batchJob, $data, BatchJobType::CAPTURE_THUMB);
 }