protected function appendLiveParams(LiveStreamEntry $entry, MediaServer $mediaServer = null, SimpleXMLElement $encodes, liveParams $liveParams) { $streamName = $entry->getId() . '_' . $liveParams->getId(); $videoCodec = 'PassThru'; $audioCodec = 'AAC'; $profile = 'main'; $systemName = $liveParams->getSystemName() ? $liveParams->getSystemName() : $liveParams->getId(); $encode = $encodes->addChild('Encode'); $encode->addChild('Enable', 'true'); $encode->addChild('Name', $systemName); $encode->addChild('StreamName', $streamName); $video = $encode->addChild('Video'); $audio = $encode->addChild('Audio'); if ($liveParams->hasTag(assetParams::TAG_AUDIO_ONLY)) { $videoCodec = 'Disable'; } if ($liveParams->hasTag(liveParams::TAG_INGEST)) { $video->addChild('Codec', $videoCodec); $audio->addChild('Codec', $audioCodec); $audio->addChild('Bitrate', 96000); return; } if ($liveParams->getWidth() || $liveParams->getHeight() || $liveParams->getFrameRate()) { switch ($liveParams->getVideoCodec()) { case flavorParams::VIDEO_CODEC_COPY: $videoCodec = 'PassThru'; break; case flavorParams::VIDEO_CODEC_FLV: case flavorParams::VIDEO_CODEC_VP6: case flavorParams::VIDEO_CODEC_H263: $profile = 'baseline'; $videoCodec = 'H.263'; break; case flavorParams::VIDEO_CODEC_H264: case flavorParams::VIDEO_CODEC_H264B: $profile = 'baseline'; // don't break // don't break case flavorParams::VIDEO_CODEC_H264H: case flavorParams::VIDEO_CODEC_H264M: $streamName = "mp4:{$streamName}"; $videoCodec = 'H.264'; break; default: KalturaLog::err("Live params video codec id [" . $liveParams->getVideoCodec() . "] is not expected"); break; } if ($liveParams->getAudioSampleRate() || $liveParams->getAudioChannels()) { switch ($liveParams->getAudioCodec()) { case flavorParams::AUDIO_CODEC_AAC: case flavorParams::AUDIO_CODEC_AACHE: $audioCodec = 'AAC'; break; default: KalturaLog::err("Live params audio codec id [" . $liveParams->getAudioCodec() . "] is not expected"); break; } } } $video->addChild('Transcoder', $mediaServer ? $mediaServer->getTranscoder() : MediaServer::DEFAULT_TRANSCODER); $video->addChild('GPUID', $mediaServer ? $mediaServer->getGPUID() : MediaServer::DEFAULT_GPUID); $frameSize = $video->addChild('FrameSize'); if (!$liveParams->getWidth() && !$liveParams->getHeight()) { $frameSize->addChild('FitMode', 'match-source'); } elseif ($liveParams->getWidth() && $liveParams->getHeight()) { $frameSize->addChild('FitMode', 'fit-height'); $frameSize->addChild('Width', $liveParams->getWidth()); $frameSize->addChild('Height', $liveParams->getHeight()); } elseif ($liveParams->getWidth()) { $frameSize->addChild('FitMode', 'fit-width'); $frameSize->addChild('Width', $liveParams->getWidth()); } elseif ($liveParams->getHeight()) { $frameSize->addChild('FitMode', 'fit-height'); $frameSize->addChild('Height', $liveParams->getHeight()); } $video->addChild('Codec', $videoCodec); $video->addChild('Profile', $profile); $video->addChild('Bitrate', $liveParams->getVideoBitrate() ? $liveParams->getVideoBitrate() * 1024 : 240000); $keyFrameInterval = $video->addChild('KeyFrameInterval'); $keyFrameInterval->addChild('FollowSource', 'true'); $keyFrameInterval->addChild('Interval', 60); $audio->addChild('Codec', $audioCodec); $audio->addChild('Bitrate', $liveParams->getAudioBitrate() ? $liveParams->getAudioBitrate() * 1024 : 96000); }
public function populateFromEntry(LiveStreamEntry $entry) { $this->setStreamName($entry->getStreamName()); $liveAssets = assetPeer::retrieveByEntryId($entry->getId(), array(assetType::LIVE)); $playbackProtocols = array(); $this->provisioningParams = array(); foreach ($liveAssets as $liveAsset) { /* @var $liveAsset liveAsset */ $tags = explode(',', $liveAsset->getTags()); foreach ($tags as $tag) { if (isset($this->provisioningParams[$tag])) { $bitrates = $this->provisioningParams[$tag]; $bitrates = explode(',', $bitrates); $bitrates[] = $liveAsset->getBitrate(); $this->provisioningParams[$tag] = implode(',', $bitrates); } else { $this->provisioningParams[$tag] = $liveAsset->getBitrate(); } } } }
protected function getBroadcastUrl(LiveStreamEntry $entry, $protocol, $hostname, $mediaServerIndex, $concatStreamName = false) { if (!$hostname) { return ''; } $url = "{$protocol}://{$hostname}"; $params = array('p' => $this->partnerId, 'e' => $entry->getId(), 'i' => $mediaServerIndex, 't' => $entry->getStreamPassword()); $paramsStr = http_build_query($params); $streamName = ''; if ($concatStreamName) { $streamName = $entry->getId() . '_%i'; } return "{$url}/{$streamName}?{$paramsStr}"; }
public function populateFromEntry(LiveStreamEntry $entry) { $this->setEncoderIP($entry->getEncodingIP1()); $this->setBackupEncoderIP($entry->getEncodingIP2()); $this->setEncoderPassword($entry->getStreamPassword()); $this->setEncoderUsername($entry->getStreamUsername()); $this->setDvrEnabled($entry->getDvrStatus()); $this->setDvrWindow($entry->getDvrWindow()); $this->setStreamType(AkamaiUniversalStreamType::UNIVERSAL_STREAMING_LIVE); $this->setStreamName(str_replace("_", "", $entry->getId())); }