/** * @param KalturaConvertJobData $data * @param string $errMessage * @return number */ public function parse(KalturaConvertJobData &$data, &$errMessage) { $sendData = new KEncodingComData(); $sendData->setUserId($this->getUserId()); $sendData->setUserKey($this->getUserKey()); $sendData->setAction(KEncodingComData::ACTION_GET_STATUS); $sendData->setMediaId($data->remoteMediaId); $err = null; $requestXml = $sendData->getXml(); $responseXml = $this->sendRequest($requestXml, $err); if (!$responseXml) { $errMessage = "Error: {$err}"; return KalturaBatchJobStatus::ALMOST_DONE; } preg_match('/\\<status\\>([\\w\\s]*)\\<\\/status\\>/', $responseXml, $status); $status = isset($status[1]) ? $status[1] : null; if (!$status) { $errMessage = 'status not found'; return KalturaBatchJobStatus::ALMOST_DONE; } if (strtolower($status) == "error") { preg_match_all('/\\<description\\>([^<]*)\\<\\/description\\>/', $responseXml, $description); $errMessage = implode("\n", $description[1]); return KalturaBatchJobStatus::FAILED; } if (strtolower($status) != "finished") { $errMessage = $status; return KalturaBatchJobStatus::ALMOST_DONE; } preg_match('/\\<s3_destination\\>(.*)\\<\\/s3_destination\\>/', $responseXml, $s3_destination); $s3_destination = isset($s3_destination[1]) ? $s3_destination[1] : null; $data->destFileSyncRemoteUrl = $s3_destination; $errMessage = "Remote url: {$s3_destination}"; return KalturaBatchJobStatus::FINISHED; }
public function convertJob(KalturaConvertJobData &$data) { $sendData = new KEncodingComData(); $sendData->setFormatTurbo('yes'); $sendData->setUserId($this->getUserId()); $sendData->setUserKey($this->getUserKey()); $sendData->setAction(KEncodingComData::ACTION_ADD_MEDIA); $sendData->setSource($this->getSrcRemoteUrlFromData($data)); switch ($data->flavorParamsOutput->videoCodec) { case KalturaVideoCodec::NONE: $sendData->setFormatOutput('mp3'); //$sendData->setFormatVideoCodec('none'); break; case KalturaVideoCodec::VP6: $sendData->setFormatOutput('flv'); $sendData->setFormatVideoCodec('vp6'); break; case KalturaVideoCodec::FLV: $sendData->setFormatOutput('flv'); $sendData->setFormatVideoCodec('vp6'); break; case KalturaVideoCodec::H263: return array(false, "Do not support H263"); $sendData->setFormatOutput('3gp'); $sendData->setFormatVideoCodec('h263'); break; case KalturaVideoCodec::H264: $sendData->setFormatOutput('mp4'); $sendData->setFormatVideoCodec('libx264'); break; } $sendData->setFormatBitrate($data->flavorParamsOutput->videoBitrate); if (!$data->flavorParamsOutput->width) { $data->flavorParamsOutput->width = '0'; } if (!$data->flavorParamsOutput->height) { $data->flavorParamsOutput->height = '0'; } $sendData->setFormatSize($data->flavorParamsOutput->width . 'x' . $data->flavorParamsOutput->height); $sendData->setFormatKeyFrame($data->flavorParamsOutput->gopSize); $sendData->setFormatFramerate($data->flavorParamsOutput->frameRate); $sendData->setFormatAudioBitrate($data->flavorParamsOutput->audioBitrate); $sendData->setFormatCbr("no"); if ($data->flavorParamsOutput->twoPass) { $sendData->setFormatTwoPass("yes"); } else { $sendData->setFormatTwoPass("no"); } $err = null; $requestXml = $sendData->getXml(); $responseXml = $this->sendRequest($requestXml, $err); if (!$responseXml) { return array(false, $err); } if (preg_match('/\\<errors\\>(.+)\\<\\/errors\\>/i', $responseXml, $arr)) { $err = isset($arr[1]) ? $arr[1] : $responseXml; return array(false, $err); } if (preg_match('/\\<mediaid\\>(\\w*)\\<\\/mediaid\\>/i', $responseXml, $arr)) { $media_id = isset($arr[1]) ? $arr[1] : null; if (!$media_id) { return array(false, "media id was not returned"); } $data->remoteMediaId = $media_id; return array(true, "Remote Media Id: {$media_id}"); } return array(false, $responseXml); }