/** * @param string $url * @param string $urlPrefix * @param flavorAsset|flavorParams $flavor * @return array */ protected function getFlavorAssetInfo($url, $urlPrefix = '', $flavor = null) { $ext = null; $audioLanguage = null; $audioLanguageName = null; if ($flavor) { if (is_callable(array($flavor, 'getFileExt'))) { $ext = $flavor->getFileExt(); } //Extract the audio language code from flavor if ($flavor->hasTag(assetParams::TAG_AUDIO_ONLY)) { $audioLanguageData = $this->getAudioLanguage($flavor); if (!$audioLanguageData) { $audioLanguage = 'und'; $audioLanguageName = 'Undefined'; } else { list($audioLanguage, $audioLanguageName) = $audioLanguageData; } } } if (!$ext) { if ($urlPrefix && $url) { $urlPrefix = $urlPrefix . "/"; } $urlPath = parse_url($urlPrefix . $url, PHP_URL_PATH); $ext = pathinfo($urlPath, PATHINFO_EXTENSION); } $bitrate = $flavor ? $flavor->getVideoBitrate() : 0; $width = $flavor ? $flavor->getWidth() : 0; $height = $flavor ? $flavor->getHeight() : 0; return array('url' => $url, 'urlPrefix' => $urlPrefix, 'ext' => $ext, 'bitrate' => $bitrate, 'width' => $width, 'height' => $height, 'audioLanguage' => $audioLanguage, 'audioLanguageName' => $audioLanguageName); }
?> ><?php echo $editFlavorParam->getDescription(); ?> </textarea> <br /> <label for="tags">Tags: </label><br /> <input type="text" id="tags" name="tags" value="<?php echo $editFlavorParam->getTags(); ?> " size="40" <?php echo $disabled; ?> /> (<?php echo implode(", ", flavorParams::getValidTags()); ?> ) <br /> <label for="format"><b>Format: </b></label><br /> <select id="format" name="format" <?php echo $disabled; ?> > <?php foreach ($formats as $name => $format) { ?> <option value="<?php echo $format; ?> " <?php
protected static function isFlavorLower(flavorParams $target, flavorParams $compare) { // currently check only the bitrate return $target->getVideoBitrate() < $compare->getVideoBitrate(); }
/** * @param string $url * @param string $urlPrefix * @param flavorAsset|flavorParams $flavor * @return array */ protected function getFlavorAssetInfo($url, $urlPrefix = '', $flavor = null) { $ext = null; if ($flavor && is_callable(array($flavor, 'getFileExt'))) { $ext = $flavor->getFileExt(); } if (!$ext) { if ($urlPrefix && $url) { $urlPrefix = $urlPrefix . "/"; } $urlPath = parse_url($urlPrefix . $url, PHP_URL_PATH); $ext = pathinfo($urlPath, PATHINFO_EXTENSION); } $bitrate = $flavor ? $flavor->getVideoBitrate() : 0; $width = $flavor ? $flavor->getWidth() : 0; $height = $flavor ? $flavor->getHeight() : 0; return array('url' => $url, 'urlPrefix' => $urlPrefix, 'ext' => $ext, 'bitrate' => $bitrate, 'width' => $width, 'height' => $height); }
public static function doCopy(flavorParams $flavorParams, flavorParamsOutput $flavorParamsOutput) { $flavorParamsOutput->setFlavorParamsId($flavorParams->getId()); $flavorParamsOutput->setFlavorParamsVersion($flavorParams->getVersion()); $flavorParamsOutput->setName($flavorParams->getName()); $flavorParamsOutput->setTags($flavorParams->getTags()); $flavorParamsOutput->setDescription($flavorParams->getDescription()); $flavorParamsOutput->setReadyBehavior($flavorParams->getReadyBehavior()); $flavorParamsOutput->setIsDefault($flavorParams->getIsDefault()); $flavorParamsOutput->setFormat($flavorParams->getFormat()); $flavorParamsOutput->setVideoCodec($flavorParams->getVideoCodec()); $flavorParamsOutput->setVideoBitrate($flavorParams->getVideoBitrate()); $flavorParamsOutput->setAudioCodec($flavorParams->getAudioCodec()); $flavorParamsOutput->setAudioBitrate($flavorParams->getAudioBitrate()); $flavorParamsOutput->setAudioChannels($flavorParams->getAudioChannels()); $flavorParamsOutput->setAudioSampleRate($flavorParams->getAudioSampleRate()); $flavorParamsOutput->setAudioResolution($flavorParams->getAudioResolution()); $flavorParamsOutput->setWidth($flavorParams->getWidth()); $flavorParamsOutput->setHeight($flavorParams->getHeight()); $flavorParamsOutput->setFrameRate($flavorParams->getFrameRate()); $flavorParamsOutput->setGopSize($flavorParams->getGopSize()); $flavorParamsOutput->setTwoPass($flavorParams->getTwoPass()); $flavorParamsOutput->setConversionEngines($flavorParams->getConversionEngines()); $flavorParamsOutput->setConversionEnginesExtraParams($flavorParams->getConversionEnginesExtraParams()); $flavorParamsOutput->setCustomData($flavorParams->getCustomData()); $flavorParamsOutput->save(); return $flavorParamsOutput; }
/** * @return bool */ public function getReadonly() { return parent::getFromCustomData(self::CUSTOM_DATA_FIELD_READONLY, null, false); }
/** * Will return for each OLD ConversionProfile a new one, IF NEEDED. * The old conversionProfile will hold a reference to the new one, so if already created a new one, it will be re-used. * All the necessary flavorParams will be added too to fit the old conversion params. * * @param ConversionProfile $conversion_profile * @return conversionProfile2 */ public static function createConversionProfile2FromConversionProfile(ConversionProfile $old_conversion_profile) { if (!$old_conversion_profile) { throw new Exception("Cannot create new conversionProfile2 for null"); } if ($old_conversion_profile->getConversionProfile2Id()) { $new_profile = conversionProfile2Peer::retrieveByPK($old_conversion_profile->getConversionProfile2Id()); if ($new_profile) { // found a valid new profile - return it return $new_profile; } } // whether there was no id or no profile - create on now and set it to be the conversionProfile2Id $new_profile = new conversionProfile2(); $new_profile->setPartnerId($old_conversion_profile->getPartnerId()); $new_name = $old_conversion_profile->getName(); $new_name = $new_name ? $new_name : "From [{$old_conversion_profile->getId()}]"; $new_profile->setName($new_name . " " . $old_conversion_profile->getProfileType()); if ($old_conversion_profile->getBypassFlv()) { $new_profile->setCreationMode(conversionProfile2::CONVERSION_PROFILE_2_CREATION_MODE_AUTOMATIC_BYPASS_FLV); $map = flavorParams::TAG_WEB . "," . flavorParams::TAG_MBR; } else { $new_profile->setCreationMode(conversionProfile2::CONVERSION_PROFILE_2_CREATION_MODE_AUTOMATIC); $map = flavorParams::TAG_WEB; } $new_profile->setInputTagsMap($map); // use the OLD code to simulate what was performed on the old_conversion_profile to retrieve the old_conversion_params list $conv_client = new kConversionClientBase("", "", "", ""); $old_conversion_command = $conv_client->createConversionCommandFromConverionProfile("src", "target", $old_conversion_profile); $description = ''; foreach ($old_conversion_command->conversion_params_list as $old_conversion_params) { // use the helper utility to fill the gaps $desc = ''; self::fixDimensionsByAspectRatio($old_conversion_params, $desc); $description .= $desc; } $new_profile->setDescription($description); $new_profile->save(); // at this point - the all $old_conversion_params are filled with the values used by the old conversion servers // transform from old to new ... // create the flavorParams and the flavorParamsConversionParams table foreach ($old_conversion_command->conversion_params_list as $old_conversion_params) { $new_flavor_params = new flavorParams(); // set all the properties for the new flavor_params $new_flavor_params->setPartnerId($old_conversion_profile->getPartnerId()); $new_flavor_params->setCreationMode(flavorParams::FLAVOR_PARAMS_CREATION_MODE_AUTOMATIC); $audio_bitrate = $old_conversion_params->audio_bitrate; if (!$audio_bitrate) { $audio_bitrate = 96; } // if empty - hard-code 96 $new_flavor_params->setAudioBitrate($audio_bitrate); // default $new_flavor_params->setAudioChannels(0); // default $new_flavor_params->setAudioResolution(0); $new_flavor_params->setAudioSampleRate(0); if ($old_conversion_profile->getCommercialTranscoder()) { // first comes ON2... $new_flavor_params->setConversionEngines(conversionEngineType::ON2 . "," . conversionEngineType::ENCODING_COM . "," . conversionEngineType::FFMPEG . "," . conversionEngineType::FFMPEG_AUX . "," . conversionEngineType::MENCODER); // $new_flavor_params->setConversionEnginesExtraParams($old_conversion_params->flix_params . "|" . $old_conversion_params->flix_params . "|" . $old_conversion_params->ffmpeg_params . "|" . $old_conversion_params->ffmpeg_params . "|" . $old_conversion_params->mencoder_params); } else { // first comes ffmpeg ... $new_flavor_params->setConversionEngines(conversionEngineType::FFMPEG . "," . conversionEngineType::FFMPEG_AUX . "," . conversionEngineType::MENCODER . "," . conversionEngineType::ON2 . "," . conversionEngineType::ENCODING_COM, ","); // $new_flavor_params->setConversionEnginesExtraParams($old_conversion_params->ffmpeg_params . "|" . $old_conversion_params->ffmpeg_params . "|" . $old_conversion_params->mencoder_params . "|" . $old_conversion_params->flix_params . "|" . $old_conversion_params->flix_params); } $target_format = "flv"; // this code will always be called for flv files // the format can be flv | mp4 | mov | avi | mp3 // IMPORTANT: // except for the FLV videos, none of the formats should be assumed WEB - they are not supposed to be played using our player at first stage. switch ($target_format) { case "mp3": $new_flavor_params->setFormat("flv"); $new_flavor_params->setAudioCodec(flavorParams::AUDIO_CODEC_MP3); // set default mp3 $new_flavor_params->setVideoCodec(flavorParams::VIDEO_CODEC_VP6); /* $new_flavor_params->setTags ( flavorParams::TAG_WEB ); */ break; case "mp4": $new_flavor_params->setFormat($target_format); $new_flavor_params->setAudioCodec(flavorParams::AUDIO_CODEC_AAC); $new_flavor_params->setVideoCodec(flavorParams::VIDEO_CODEC_H264); $new_flavor_params->setTags(',mp4_export'); break; case "mov": $new_flavor_params->setFormat($target_format); $new_flavor_params->setAudioCodec(flavorParams::AUDIO_CODEC_AAC); $new_flavor_params->setVideoCodec(flavorParams::VIDEO_CODEC_H264); $new_flavor_params->setTags('mov_export'); break; case "avi": $new_flavor_params->setFormat($target_format); $new_flavor_params->setAudioCodec(flavorParams::AUDIO_CODEC_MP3); $new_flavor_params->setVideoCodec(flavorParams::VIDEO_CODEC_H264); $new_flavor_params->setTags('avi_export'); break; case "flv": $new_flavor_params->setFormat($target_format); $new_flavor_params->setAudioCodec(flavorParams::AUDIO_CODEC_MP3); $new_flavor_params->setVideoCodec(flavorParams::VIDEO_CODEC_VP6); $new_flavor_params->setTags(flavorParams::TAG_WEB . "," . flavorParams::TAG_MBR); break; } $new_flavor_params->setName($new_name); $new_flavor_params->setFrameRate(0); // DONT set the framerate $old_conversion_params->framerate ); if ($old_conversion_params->gop_size == 5) { $new_flavor_params->setGopSize(5); $new_flavor_params->removeTag(flavorParams::TAG_MBR); $new_flavor_params->addTag(flavorParams::TAG_EDIT); } else { $new_flavor_params->setGopSize(0); // 0 will automatically allow default gopsize } $new_flavor_params->setWidth($old_conversion_params->width); $new_flavor_params->setHeight($old_conversion_params->height); $new_flavor_params->setVersion(1); $new_flavor_params->setReadyBehavior(flavorParamsConversionProfile::READY_BEHAVIOR_OPTIONAL); $new_flavor_params->setVideoBitrate($old_conversion_params->bitrate ? $old_conversion_params->bitrate : ""); // TODO - fill the rest ... $new_flavor_params->save(); // add to the 1-to-many table $flavor_params_conversion_profile = new flavorParamsConversionProfile(); $flavor_params_conversion_profile->setConversionProfileId($new_profile->getId()); $flavor_params_conversion_profile->setFlavorParamsId($new_flavor_params->getId()); $flavor_params_conversion_profile->setReadyBehavior($new_flavor_params->getReadyBehavior()); $flavor_params_conversion_profile->save(); } // always add to the *source* flavotParams to the 1-to-many table $flavor_params_conversion_profile = new flavorParamsConversionProfile(); $flavor_params_conversion_profile->setConversionProfileId($new_profile->getId()); $flavor_params_conversion_profile->setFlavorParamsId(flavorParams::SOURCE_FLAVOR_ID); $flavor_params_conversion_profile->save(); // point to the new profile and save the old one $old_conversion_profile->setConversionProfile2Id($new_profile->getId()); $old_conversion_profile->save(); return $new_profile; }
public function getDepth() { return parent::getFromCustomData(self::CUSTOM_DATA_FIELD_DEPTH); }
/** * @return boolean */ public function getFlatten() { return parent::getFromCustomData('flatten'); }
/** * Applies default values to this object. * This method should be called from the object's constructor (or * equivalent initialization method). * @see __construct() */ public function applyDefaultValues() { parent::applyDefaultValues(); $this->type = WidevinePlugin::getAssetTypeCoreValue(WidevineAssetType::WIDEVINE_FLAVOR); }
/** * Applies default values to this object. * This method should be called from the object's constructor (or * equivalent initialization method). * @see __construct() */ public function applyDefaultValues() { parent::applyDefaultValues(); $this->setType(assetType::LIVE); }
/** * @return boolean */ public function setPoly2bitmap($poly2Bitmap) { parent::putInCustomData('poly2Bitmap', $poly2Bitmap); }