Example #1
0
 /**
  * @param BatchJob $dbBatchJob
  * @param kConvertLiveSegmentJobData $data
  * @return BatchJob
  */
 public static function handleConvertLiveSegmentFinished(BatchJob $dbBatchJob, kConvertLiveSegmentJobData $data)
 {
     $liveEntry = entryPeer::retrieveByPKNoFilter($dbBatchJob->getEntryId());
     /* @var $liveEntry LiveEntry */
     if (!$liveEntry) {
         KalturaLog::err("Live entry [" . $dbBatchJob->getEntryId() . "] not found");
         return $dbBatchJob;
     }
     $recordedEntry = entryPeer::retrieveByPKNoFilter($liveEntry->getRecordedEntryId());
     if (!$recordedEntry) {
         KalturaLog::err("Recorded entry [" . $liveEntry->getRecordedEntryId() . "] not found");
         return $dbBatchJob;
     }
     $asset = assetPeer::retrieveByIdNoFilter($data->getAssetId());
     /* @var $asset liveAsset */
     if (!$asset) {
         KalturaLog::err("Live asset [" . $data->getAssetId() . "] not found");
         return $dbBatchJob;
     }
     $keyType = liveAsset::FILE_SYNC_ASSET_SUB_TYPE_LIVE_PRIMARY;
     if ($data->getMediaServerIndex() == MediaServerIndex::SECONDARY) {
         $keyType = liveAsset::FILE_SYNC_ASSET_SUB_TYPE_LIVE_SECONDARY;
     }
     $key = $asset->getSyncKey($keyType);
     $baseName = $asset->getEntryId() . '_' . $asset->getId() . '.ts';
     kFileSyncUtils::moveFromFileToDirectory($key, $data->getDestFilePath(), $baseName);
     if ($data->getMediaServerIndex() == MediaServerIndex::SECONDARY) {
         return $dbBatchJob;
     }
     $files = kFileSyncUtils::dir_get_files($key, false);
     if (count($files) > 1) {
         // find replacing entry id
         $replacingEntry = kFlowHelper::getReplacingEntry($recordedEntry, $asset);
         if (is_null($replacingEntry)) {
             KalturaLog::err('Failed to retrieve replacing entry');
             return $dbBatchJob;
         }
         $flavorParams = assetParamsPeer::retrieveByPKNoFilter($asset->getFlavorParamsId());
         if (is_null($flavorParams)) {
             KalturaLog::err('Failed to retrieve asset params');
             return $dbBatchJob;
         }
         // create asset
         $replacingAsset = assetPeer::getNewAsset(assetType::FLAVOR);
         $replacingAsset->setPartnerId($replacingEntry->getPartnerId());
         $replacingAsset->setEntryId($replacingEntry->getId());
         $replacingAsset->setStatus(asset::FLAVOR_ASSET_STATUS_QUEUED);
         $replacingAsset->setFlavorParamsId($flavorParams->getId());
         $replacingAsset->setFromAssetParams($flavorParams);
         if ($flavorParams->hasTag(assetParams::TAG_SOURCE)) {
             $replacingAsset->setIsOriginal(true);
         }
         $replacingAsset->save();
         $job = kJobsManager::addConcatJob($dbBatchJob, $replacingAsset, $files);
     }
     return $dbBatchJob;
 }
Example #2
0
 /**
  * @param BatchJob $dbBatchJob
  * @param kConvertLiveSegmentJobData $data
  * @return BatchJob
  */
 public static function handleConvertLiveSegmentFinished(BatchJob $dbBatchJob, kConvertLiveSegmentJobData $data)
 {
     $liveEntry = entryPeer::retrieveByPKNoFilter($dbBatchJob->getEntryId());
     /* @var $liveEntry LiveEntry */
     if (!$liveEntry) {
         KalturaLog::err("Live entry [" . $dbBatchJob->getEntryId() . "] not found");
         return $dbBatchJob;
     }
     $recordedEntry = entryPeer::retrieveByPKNoFilter($liveEntry->getRecordedEntryId());
     if (!$recordedEntry) {
         KalturaLog::err("Recorded entry [" . $liveEntry->getRecordedEntryId() . "] not found");
         return $dbBatchJob;
     }
     $asset = assetPeer::retrieveByIdNoFilter($data->getAssetId());
     /* @var $asset liveAsset */
     if (!$asset) {
         KalturaLog::err("Live asset [" . $data->getAssetId() . "] not found");
         return $dbBatchJob;
     }
     $keyType = liveAsset::FILE_SYNC_ASSET_SUB_TYPE_LIVE_PRIMARY;
     if ($data->getMediaServerIndex() == MediaServerIndex::SECONDARY) {
         $keyType = liveAsset::FILE_SYNC_ASSET_SUB_TYPE_LIVE_SECONDARY;
     }
     $key = $asset->getSyncKey($keyType);
     $baseName = $asset->getEntryId() . '_' . $asset->getId() . '.ts';
     kFileSyncUtils::moveFromFileToDirectory($key, $data->getDestFilePath(), $baseName);
     if ($data->getMediaServerIndex() == MediaServerIndex::SECONDARY) {
         return $dbBatchJob;
     }
     $files = kFileSyncUtils::dir_get_files($key, false);
     // If we have less files on disk than what we should have it means the output file will be missing segments.
     // don't generate it, and the next concat will do the work for us.
     if (count($files) != $data->getFileIndex() + 1) {
         KalturaLog::warning('number of segments on disk ' . count($files) . ' is not equal to segment index ' . $data->getFileIndex() . ' - not running the concat job');
         return $dbBatchJob;
     }
     if (count($files) > 1) {
         // find replacing entry id
         $replacingEntry = self::getReplacingEntry($recordedEntry, $asset);
         if (is_null($replacingEntry)) {
             KalturaLog::err("Failed to get replacing entry");
         }
         $flavorParams = assetParamsPeer::retrieveByPKNoFilter($asset->getFlavorParamsId());
         if (is_null($flavorParams)) {
             KalturaLog::err('Failed to retrieve asset params');
             return $dbBatchJob;
         }
         // create asset
         $replacingAsset = assetPeer::getNewAsset(assetType::FLAVOR);
         $replacingAsset->setPartnerId($replacingEntry->getPartnerId());
         $replacingAsset->setEntryId($replacingEntry->getId());
         $replacingAsset->setStatus(asset::FLAVOR_ASSET_STATUS_QUEUED);
         $replacingAsset->setFlavorParamsId($flavorParams->getId());
         $replacingAsset->setFromAssetParams($flavorParams);
         if ($flavorParams->hasTag(assetParams::TAG_SOURCE)) {
             $replacingAsset->setIsOriginal(true);
         }
         $replacingAsset->save();
         $job = kJobsManager::addConcatJob($dbBatchJob, $replacingAsset, $files);
     }
     return $dbBatchJob;
 }